gpt4 book ai didi

python - findChild 在 pyqt 设计器中创建的对象上

转载 作者:行者123 更新时间:2023-12-01 02:28:14 35 4
gpt4 key购买 nike

我的 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)

和新的 Controller 类:

class NewController(object):
def __init__(self, subwindow):
self.subwindow = subwindow
self.ui = subwindow.ui

从我的 Controller 中,我想在该窗口上调用 .findChild()

submitFrame = self.ui.findChild(QtGui.QFrame, "frameSubmit")

,但我得到的只是:

AttributeError: 'Ui_SubWindow' object has no attribute 'findChild'

我认为这是因为 Ui_SubWindow 类不是某个 QObject 的子类,而是一个对象的子类,对吗?

self.uisubwindow.ui 相同,其中 subwindowRemoteWindow 的实例,将 Ui_SubWindow 类作为 .ui 参数。

是否有机会让 pyuic 或 Qt Designer 将此子窗口设为 QObject 的子窗口,无需操作自动生成的 .py 文件?

最佳答案

您根本不需要使用findChild,因为pyuic会自动在ui对象中为Qt Designer中定义的所有小部件创建属性。属性名称取自objectName。所以你需要的是:

submitFrame = self.ui.frameSubmit

关于python - findChild 在 pyqt 设计器中创建的对象上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47140550/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com