我的pyqt有以下问题:
假设我在Qt设计器中创建一个对象并将其另存为.ui文件。然后我使用pyuic将其转换为.py文件。因为我想将一个新模块集成到一个给定的程序中,这是最常用的方法(因为稍后.ui文件将在启动时自动转换为.py文件)。在
如果我查看我的.py文件,我会看到以下窗口:
class Ui_SubWindow(object):
def setupUi(self, SubWindow):
SubWindow.setObjectName(_fromUtf8("SubWindow"))
....
我有一个RemoteWindow
类作为主窗口,在这里启动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的子类,而是一个object的子类,对吗?在
self.ui
与subwindow.ui
相同,其中subwindow
是RemoteWindow
的一个实例,该实例具有.ui
参数Ui_SubWindow
类。在
有没有机会让pyuic或Qt设计器使这个子窗口成为QObject的子窗口,而不操作自动生成的.py文件?在
您根本不需要使用
findChild
,因为pyuic将自动为Qt Designer中定义的所有小部件在ui
对象中创建属性。属性名取自objectName
。所以你只需要:Qt Designer创建一个设计,即一个用于填充主窗口小部件的类,以便内部小部件不是该类的子级,如果要使用findChild,则必须在调用方法setupUi之后对返回该类的小部件执行此操作。在
然后你应该按照以下方式使用它:
^{pr2}$相关问题 更多 >
编程相关推荐