Python使用Qt的UI文件
我是个PHP程序员,不过有时候觉得需要写些小软件,对于我这种不太熟悉桌面软件开发的人来说,界面问题最让我头痛。听说Qt很强大,而且是跨平台,所以决定学习它用来弥补我写桌面软件的不足。
Qt一般是通过C++来调用,如果要让Python支持Qt,需要下载PyQt这个库,十几M大小,安装后就可以让Python支持部分Qt功能。
在完整版Qt的Demo中,一般都是程序与界面分开,界面代码被写在.ui后缀的XML文件中,而程序只需要调用UI文件和写处理事件就行,实现代码与界面分离。而且ui文件可以用Qt Designer这个工具设计复杂的界面,这个工具在安装PyQt后就会有,而且使用方便。
查过Qt手册,发现读取UI文件功能是通过QtUiTools模块来完成,但PyQt却没有这个类,所以无法直读UI文件。找到唯一利用UI的方法,是通过pyuic4指令进行转换,格式如下:
pyuic4 -o ui_xxx.py xxx.ui
pyuic4可以把ui文件转换为python的界面代码,这样python就可以利用强大的Qt Designer设计界面。
调用代码如下:
Qt一般是通过C++来调用,如果要让Python支持Qt,需要下载PyQt这个库,十几M大小,安装后就可以让Python支持部分Qt功能。
在完整版Qt的Demo中,一般都是程序与界面分开,界面代码被写在.ui后缀的XML文件中,而程序只需要调用UI文件和写处理事件就行,实现代码与界面分离。而且ui文件可以用Qt Designer这个工具设计复杂的界面,这个工具在安装PyQt后就会有,而且使用方便。
查过Qt手册,发现读取UI文件功能是通过QtUiTools模块来完成,但PyQt却没有这个类,所以无法直读UI文件。找到唯一利用UI的方法,是通过pyuic4指令进行转换,格式如下:
pyuic4 -o ui_xxx.py xxx.ui
pyuic4可以把ui文件转换为python的界面代码,这样python就可以利用强大的Qt Designer设计界面。
调用代码如下:
代码
#-*- coding: gbk -*-
#加载有需要的Qt库
from PyQt4 import QtCore, QtGui
#从ui_test.py文件中读取Ui_Dialog类,Ui_Dialog类由pyuic4生成
from ui_test import Ui_Dialog
#继承的类要和生成的ui对相
class Ui(QtGui.QDialog):
def __init__(self, parent=None):
super(Ui, self).__init__(parent)
self.ui = Ui_Dialog()
self.ui.setupUi(self)
if __name__ == '__main__':
import sys
app = QtGui.QApplication(sys.argv)
window = Ui()
window.show()
sys.exit(app.exec_())
#加载有需要的Qt库
from PyQt4 import QtCore, QtGui
#从ui_test.py文件中读取Ui_Dialog类,Ui_Dialog类由pyuic4生成
from ui_test import Ui_Dialog
#继承的类要和生成的ui对相
class Ui(QtGui.QDialog):
def __init__(self, parent=None):
super(Ui, self).__init__(parent)
self.ui = Ui_Dialog()
self.ui.setupUi(self)
if __name__ == '__main__':
import sys
app = QtGui.QApplication(sys.argv)
window = Ui()
window.show()
sys.exit(app.exec_())