我正在用PyQt制作一个图形用户界面,我的MainWindow类也有问题。该窗口不显示我在其他类中定义的小部件,或者它将在左上角显示小部件的一小部分,然后切断小部件的其余部分。有人能帮我解决这个问题吗?
下面是一些示例代码,显示了我的问题。
import sys
from PyQt4 import QtGui, QtCore
class MainWindow(QtGui.QMainWindow):
def __init__(self, parent=None):
super(MainWindow, self).__init__(parent=parent)
self.resize(300, 400)
self.centralWidget = QtGui.QWidget(self)
self.hbox = QtGui.QHBoxLayout(self.centralWidget)
self.setLayout(self.hbox)
names = ['button1', 'button2', 'button3']
testButtons = buttonFactory(names, parent=self)
self.hbox.addWidget(testButtons)
class buttonFactory(QtGui.QWidget):
def __init__(self, names, parent=None):
super(buttonFactory, self).__init__(parent=parent)
self.vbox = QtGui.QVBoxLayout()
self.setLayout(self.vbox)
for name in names:
btn = QtGui.QPushButton(name)
self.vbox.addWidget(btn)
if __name__ == '__main__':
app = QtGui.QApplication(sys.argv)
gui = MainWindow()
gui.show()
app.exec_()
发布于 2015-12-07 14:49:51
QMainWindow有一个中心小部件,它是一个容器,您应该在其中添加小部件。它有自己的布局。QMainWindow的布局是针对工具栏之类的。必须使用centralWidget方法设置setCentralWidget
。仅仅叫它self.centralWidget
是不够的
使用以下三行代替。
self.setCentralWidget(QtGui.QWidget(self))
self.hbox = QtGui.QHBoxLayout()
self.centralWidget().setLayout(self.hbox)
https://stackoverflow.com/questions/34143233
复制相似问题