在PySide中使用QUiLoader和UI文件动态创建运行时用户界面

6 投票
2 回答
5984 浏览
提问于 2025-04-17 08:18

我在把 PythonQt DesignerUI 文件连接起来时遇到了很大的困难。
我查阅了所有能找到的关于 PySide 的教程,比如这个:http://zetcode.com/gui/pysidetutorial/eventsandsignals/

如果直接在代码中设置 图形用户界面(GUI),其实挺简单的,但我们真的想用 Qt Designer 和 UI 文件。

有些其他的讨论只是提到用 pyuic.ui 文件转换成 .py 文件,但如果可以的话,我希望能在运行时做到这一点。

这是我目前的代码。
我完全不知道怎么把 connectBtn 和 UI 文件中的 Connect 连接起来:

def initUI(self):      

    loader = QUiLoader()
    file = QFile("designer_test.ui")
    file.open(QFile.ReadOnly)
    myWidget = loader.load(file, self)
    #print(dir(myWidget))
    file.close()

    layout = QtGui.QVBoxLayout()
    layout.addWidget(myWidget)
    self.setLayout(layout)

    connectBtn = QtGui.QPushButton("Connect", self)

    connectBtn.clicked.connect(self.connectClicked)

    myWidget.setWindowTitle('Window')
    myWidget.show()

def connectClicked(self):
    print("works")

2 个回答

0

我做了一个叫做自动连接器的工具,目的是为了帮助我处理这个问题……请你看看这个工具。

3

你有没有查看过这个页面:在你的应用中使用设计师的UI文件

这个页面是针对C++的,但我觉得里面的概念和你在Python中想做的事情是一样的。

根据那个页面,要获取由UI文件创建的控件,你需要调用findChild()这个方法。

还有,这个问题也可以参考一下。

撰写回答