我正在创建一个加载几个.ui文件的应用程序。第一个是QMainWindow类型,其他是QWidget类型。
我不知道如何将第二个UI (module.ui)加载到self中,使小部件可以通过self.<widget_name>访问。
如何才能做到这一点?
from PyQt4 import QtGui
from PyQt4 import uic
class TestApp(QtGui.QMainWindow):
def __init__(self):
super(TestApp, self).__init__()
# Load main window and the module
uic.loadUi('main_window.ui', self) # QMainWindow, contains testLayout, loads into self
ui_module = uic.loadUi('module.ui') # QWidget
# Attach module to main window
self.testLayout.addWidget(ui_module) # this works fine
# Edit widget in UI module
self.label.setText('Hello') # does not work (since self.label doesn't exist)我可以这样做:
self.label = ui_module.label
self.label.setText('Hello')...but我想从一开始就把UI加载到self中。
如果我试图将UI加载到self中,我得到一个错误:
uic.loadUi('module.ui', self)
>>> QLayout: Attempting to add QLayout "" to TestApp "Form", which already has a layout发布于 2016-06-02 01:44:32
您需要创建一个小部件以将ui文件加载到其中
self.widget = QWidget(self)
uic.loadUi('module.ui', self.widget)
self.widget.label.setText('Hello')也就是说,如果您为另一个小部件创建一个单独的类,可能会更好。
class MyWidget(QWidget):
def __init__(self, **args, **kwargs):
super(MyWidget, self).__init__(*args, **kwargs)
uic.loadUi('module.ui', self)
self.label.setText('Hello')
class TestApp(QtGui.QMainWindow):
def __init__(self):
...
self.widget = MyWidget(self)https://stackoverflow.com/questions/37528339
复制相似问题