【发布时间】:2017-11-06 15:38:51
【问题描述】:
我的 pyqt 有以下问题:
假设我在 Qt Designer 中创建了一个对象并将其保存为 .ui 文件。然后我使用 pyuic 将其转换为 .py 文件。因为我想将新模块集成到给定程序中,所以这是最喜欢的方式(因为稍后 .ui 文件将在启动时自动转换为 .py 文件)。
如果我查看我的 .py 文件,我会在窗口中看到以下内容:
class Ui_SubWindow(object):
def setupUi(self, SubWindow):
SubWindow.setObjectName(_fromUtf8("SubWindow"))
....
我有一个 RemoteWindow 类作为 MainWindow,其中启动了 SubWindow:
class RemoteWindow(QtGui.QMainWindow):
def __init__(self, subcore):
super(RemoteWindow, self).__init__(subcore.core.gui)
self.subcore = subcore
self.ui = Ui_SubWindow()
现在我有一个核心程序:
class SubCore(object):
def __init__(self, core, identity, number):
...
self.gui = RemoteWindow(self)
self.newController = NewController(self.gui)
以及新的控制器类:
class NewController(object):
def __init__(self, subwindow):
self.subwindow = subwindow
self.ui = subwindow.ui
从我的控制器我想在那个窗口上调用一个 .findChild()
submitFrame = self.ui.findChild(QtGui.QFrame, "frameSubmit")
,但我得到的只是一个:
AttributeError: 'Ui_SubWindow' object has no attribute 'findChild'
我假设是这样,因为 Ui_SubWindow 类不是某个 QObject 的子类,而是一个对象的子类,对吗?
self.ui 与subwindow.ui 相同,其中subwindow 是RemoteWindow 的一个实例,它的.ui 参数是Ui_SubWindow 类。
是否有机会让 pyuic 或 Qt 设计器使这个 SubWindow 成为 QObject 的子窗口,无需操作自动生成的 .py 文件?
【问题讨论】: