因此,如果我进入QtDesigner并构建UI,它将被另存为.ui文件。如何将其作为python文件或在python中使用?
因此,如果我进入QtDesigner并构建UI,它将被另存为.ui文件。如何将其作为python文件或在python中使用?
Answers:
在代码中使用.ui的另一种方法是:
from PyQt4 import QtCore, QtGui, uic
class MyWidget(QtGui.QWidget)
...
#somewhere in constructor:
uic.loadUi('MyWidget.ui', self)
两种方法都很好。不要忘记,如果您将Qt资源文件(极其有用)用于图标等,则也必须对其进行编译:
pyrcc4.exe -o ui/images_rc.py ui/images/images.qrc
请注意,在uic
编译接口时,它将在.py文件的末尾添加“ import images_rc”,因此您必须使用此名称将资源编译到文件中,或在生成的代码中重命名。
结合Max的答案和Shriramana Sharma的邮件列表帖子,我构建了一个小的工作示例来加载mywindow.ui
包含的文件QMainWindow
(因此只需选择在Qt Designer的File-New
对话框中创建一个主窗口)。
这是加载它的代码:
import sys
from PyQt4 import QtGui, uic
class MyWindow(QtGui.QMainWindow):
def __init__(self):
super(MyWindow, self).__init__()
uic.loadUi('mywindow.ui', self)
self.show()
if __name__ == '__main__':
app = QtGui.QApplication(sys.argv)
window = MyWindow()
sys.exit(app.exec_())
我发现这篇文章很有帮助。
http://talk.maemo.org/archive/index.php/t-43663.html
我将简要介绍从该文章中获取的创建.ui文件并将其更改为.py文件的操作。
文件已创建并保存,现在我们将使用pyuic从中生成Python代码!
希望这对某人有帮助。
我认为更干净的方法是先如上所述导出到.py:
pyuic4 foo.ui > foo.py
然后在代码中使用它(例如main.py
),例如:
from foo import Ui_MyWindow
class MyWindow(QtGui.QDialog):
def __init__(self):
super(MyWindow, self).__init__()
self.ui = Ui_MyWindow()
self.ui.setupUi(self)
# go on setting up your handlers like:
# self.ui.okButton.clicked.connect(function_name)
# etc...
def main():
app = QtGui.QApplication(sys.argv)
w = MyWindow()
w.show()
sys.exit(app.exec_())
if __name__ == "__main__":
main()
这种方式使不使用qt-designer的其他人能够读取代码,并使您的功能代码不foo.py
被设计人员覆盖。您只需要ui
通过MyWindow
类进行引用即可,如上所示。
self.ui.okButton.clicked.connect(self.function_name)
给我 TypeError: event() takes 1 positional argument but 2 were given
。您是如何解决的?
在pyqt5中将ui文件转换为.py文件
pyuic5.exe youruifile.ui -o outputpyfile.py -x