python - 自定义小部件未出现在主窗口中
问题描述
我正在尝试创建一个自定义小部件并使其出现在主窗口的网格布局上。
class MyCustomWidget(QtGui.QWidget):
def __init__(self):
super(MyCustomWidget, self).__init__()
self.setupUi()
def setupUi(self):
self.testText = QtGui.QLabel()
font = QtGui.QFont()
font.setPointSize(8)
font.setBold(True)
font.setWeight(75)
self.testText.setFont(font)
self.testText.setAlignment(QtCore.Qt.AlignCenter)
self.testText.setObjectName(_fromUtf8("patientText"))
self.testText.setText("Test")
class UIMainWindow(object):
def setupUi(self, MainWindow):
...
self.gridLayout = QtGui.QGridLayout()
self.gridLayout.setObjectName(_fromUtf8("gridLayout"))
...
self.test = MyCustomWidget()
self.gridLayout.addWidget(self.test)
当我运行此代码时,会出现主窗口,但没有关于我创建的小部件的任何内容。如果我只是在网格布局中添加一个 QLabel,它就会出现。
解决方案
照原样,您MyCustomWidget
只是一个标准小部件,其属性testText
包含QLabel
. 如果您希望它包含将显示在主窗口上的子小部件,您需要实例化一个布局,将子小部件添加到布局中,然后将布局添加到MyCustomWidget
:
在 MyCustomWidget 的 setupUi 结束时
self.gridLayout = QtGui.QGridLayout()
self.gridLayout.setObjectName(_fromUtf8("MyCustomWidgetLayout"))
self.gridLayout.addWidget(self.testText)
#add all other widgets here
self.setLayout(self.gridLayout)
您还可以通过调用addLayout
父布局上的方法并将其传递给子布局来创建嵌入式布局!
推荐阅读
- django - 如何向嵌套序列化程序添加默认值?
- javascript - 键移动后缩放翻译问题
- html - 如何在 Angular 中定位材质菜单?
- django - Django + Gunicorn + Nginx。404
- angular - 如何在Angular中将按钮添加到循环的最后一个组件
- python - Spyder 4.1.5 中不支持没有形状的对象数组问题
- javascript - 编写一个基于 JS 中的输入数组创建动态输出的函数
- regex - 在 Bigquery 中使用正则表达式获取地址的街道名称和编号
- python - 是否可以使用 Selenium 与通过请求访问的网页进行交互?
- r - 带有 scale_y_continuous() 的多面直方图中的百分比