在PySide中使用QUiLoader和UI文件动态创建运行时用户界面
我在把 Python
和 Qt Designer
的 UI
文件连接起来时遇到了很大的困难。
我查阅了所有能找到的关于 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()这个方法。
还有,这个问题也可以参考一下。