我正在创建一个GUI,该GUI根据一些数据动态填充网格布局。网格的每个单元格都将显示A,B或C。我正在使用Qt Designer构建此GUI,从而在 init ()期间加载.ui文件。由于gridlayout显示的数据可能在每次GUI加载之间都可能发生变化,因此我无法在.ui文件中实现它们。
我最终意识到,我不知道在加载.ui文件之后如何添加更多小部件。即使使用QtCore.QCoreApplication.processEvents()也不起作用。
为了使以下测试正常工作,您需要使用Qt Designer制作一个具有名为“ verticalLayout”的QVBoxLayout的.ui文件。
from PySide2 import QtWidgets, QtCore, QtUiTools, QtGui
class myClass(QtWidgets.QMainWindow):
'''
UI Class for this tool.
'''
def __init__(self, *args, **kwargs):
super(myClass, self).__init__(*args, **kwargs)
self.UI_FILE = 'path\\to\\myClass.ui')
#load the ui file
loader = QtUiTools.QUiLoader()
file = QtCore.QFile(self.UI_FILE)
file.open(QtCore.QFile.ReadOnly)
try:
self.ui = loader.load(file, self)
finally:
file.close()
self.setMinimumSize(1200, 800)
self.setCentralWidget(self.ui.centralWidget())
self.myLabel = QtWidgets.QLabel(self)
self.myLabel.setText('lol')
self.ui.verticalLayout.addWidget(self.myLabel)
我希望出现一个标签,上面写着“大声笑”。