博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用Qt Designer为PySide设计用户界面
阅读量:6126 次
发布时间:2019-06-21

本文共 4185 字,大约阅读时间需要 13 分钟。

Qt Designer中文名:Qt设计师,是一个可视化GUI设计工具。可以帮助我们加快编写Qt程序的速度。Qt Designer可以将设计好的用户界面保存为.ui文件,其实是XML格式的文本文件。

为了在PySide使用.ui文件,我们需要通过工具pyside-uic将.ui文件转换为.py文件,然后将转换后的.py文件引入我们自己的代码中。

下面是一个实际的例子,首先在Qt Designer中设计一个对话框,名为GoToCellDialog,并另存为 gotocelldialog.ui。

gotocelldialog.ui文件内容:

代码
 
<?
xml version="1.0" encoding="UTF-8"
?>
<
ui
version
="4.0"
>
<
class
>
GoToCellDialog
</
class
>
<
widget
class
="QDialog"
name
="GoToCellDialog"
>
<
property
name
="geometry"
>
<
rect
>
<
x
>
0
</
x
>
<
y
>
0
</
y
>
<
width
>
226
</
width
>
<
height
>
70
</
height
>
</
rect
>
</
property
>
<
property
name
="windowTitle"
>
<
string
>
Go to Cell
</
string
>
</
property
>
<
widget
class
="QLineEdit"
name
="lineEdit"
>
<
property
name
="geometry"
>
<
rect
>
<
x
>
98
</
x
>
<
y
>
8
</
y
>
<
width
>
119
</
width
>
<
height
>
20
</
height
>
</
rect
>
</
property
>
</
widget
>
<
widget
class
="QLabel"
name
="label"
>
<
property
name
="geometry"
>
<
rect
>
<
x
>
8
</
x
>
<
y
>
8
</
y
>
<
width
>
84
</
width
>
<
height
>
20
</
height
>
</
rect
>
</
property
>
<
property
name
="text"
>
<
string
>
&amp;
Cell Location:
</
string
>
</
property
>
<
property
name
="buddy"
>
<
cstring
>
lineEdit
</
cstring
>
</
property
>
</
widget
>
<
widget
class
="QPushButton"
name
="okButton"
>
<
property
name
="geometry"
>
<
rect
>
<
x
>
58
</
x
>
<
y
>
38
</
y
>
<
width
>
77
</
width
>
<
height
>
25
</
height
>
</
rect
>
</
property
>
<
property
name
="text"
>
<
string
>
Ok
</
string
>
</
property
>
</
widget
>
<
widget
class
="QPushButton"
name
="cancelButton"
>
<
property
name
="geometry"
>
<
rect
>
<
x
>
141
</
x
>
<
y
>
38
</
y
>
<
width
>
77
</
width
>
<
height
>
25
</
height
>
</
rect
>
</
property
>
<
property
name
="text"
>
<
string
>
Cancel
</
string
>
</
property
>
</
widget
>
</
widget
>
<
resources
/>
<
connections
/>
</
ui
>

 

接下来使用pyside-uic转换.ui文件:

 
pyside
-
uic gotocelldialog.ui
-
o gotocelldialog_ui.py

 

gotocelldialog_ui.py文件内容:

代码
 
#
-*- coding: utf-8 -*-
#
Form implementation generated from reading ui file 'gotocelldialog.ui'
#
#
Created: Wed Oct 27 17:13:19 2010
#
by: PySide uic UI code generator
#
#
WARNING! All changes made in this file will be lost!
from
PySide
import
QtCore, QtGui
class
Ui_GoToCellDialog(object):
def
setupUi(self, GoToCellDialog):
GoToCellDialog.setObjectName(
"
GoToCellDialog
"
)
GoToCellDialog.resize(
226
,
70
)
self.lineEdit
=
QtGui.QLineEdit(GoToCellDialog)
self.lineEdit.setGeometry(QtCore.QRect(
98
,
8
,
119
,
20
))
self.lineEdit.setObjectName(
"
lineEdit
"
)
self.label
=
QtGui.QLabel(GoToCellDialog)
self.label.setGeometry(QtCore.QRect(
8
,
8
,
84
,
20
))
self.label.setObjectName(
"
label
"
)
self.okButton
=
QtGui.QPushButton(GoToCellDialog)
self.okButton.setGeometry(QtCore.QRect(
58
,
38
,
77
,
25
))
self.okButton.setObjectName(
"
okButton
"
)
self.cancelButton
=
QtGui.QPushButton(GoToCellDialog)
self.cancelButton.setGeometry(QtCore.QRect(
141
,
38
,
77
,
25
))
self.cancelButton.setObjectName(
"
cancelButton
"
)
self.label.setBuddy(self.lineEdit)
self.retranslateUi(GoToCellDialog)
QtCore.QMetaObject.connectSlotsByName(GoToCellDialog)
def
retranslateUi(self, GoToCellDialog):
GoToCellDialog.setWindowTitle(QtGui.QApplication.translate(
"
GoToCellDialog
"
,
"
Go to Cell
"
, None, QtGui.QApplication.UnicodeUTF8))
self.label.setText(QtGui.QApplication.translate(
"
GoToCellDialog
"
,
"
&Cell Location:
"
, None, QtGui.QApplication.UnicodeUTF8))
self.okButton.setText(QtGui.QApplication.translate(
"
GoToCellDialog
"
,
"
Ok
"
, None, QtGui.QApplication.UnicodeUTF8))
self.cancelButton.setText(QtGui.QApplication.translate(
"
GoToCellDialog
"
,
"
Cancel
"
, None, QtGui.QApplication.UnicodeUTF8))

 

然后编写代码,引用gotocelldialog_ui.py,并显示GoToCellDialog。代码如下:

代码
 
1
#
!/usr/bin/env python
2
 
3
 
import
sys
4
5
 
from
PySide.QtCore
import
*
6
 
from
PySide.QtGui
import
*
7
8
 
from
gotocelldialog_ui
import
Ui_GoToCellDialog
9
10
 
class
GoToCellDialog(QDialog):
11
def
__init__
(self, parent
=
None):
12
QDialog.
__init__
(self, parent)
13
14
self.ui
=
Ui_GoToCellDialog()
15
self.ui.setupUi(self)
16
17
 
def
main():
18
app
=
QApplication(sys.argv)
19
d
=
GoToCellDialog()
20
d.show()
21
sys.exit(app.exec_())
22
23
 
if
__name__
==
'
__main__
'
:
24
main()
复制代码

 

最终的效果图:

转载地址:http://olfua.baihongyu.com/

你可能感兴趣的文章
苹果CFO抨击欧盟税务调查:不欠一分钱
查看>>
专家:刷脸登录有漏洞 互联网企业在玩"噱头"
查看>>
三星“掌门人”李在镕身在看守所 但仍“遥控”三星
查看>>
操作系统的基本架构
查看>>
中植集团应用博雅全视频会议系统
查看>>
Win10份额8月直逼Win7:Windows欧美决战前戏开场
查看>>
中国电信开启2017年PON设备集采
查看>>
别再提什么云计算,你需要的只是云服务
查看>>
孟加拉央行表示黑客盗取其美国联邦储备帐户巨额资金
查看>>
Mycat(3)临时解决utf8mb4编码问题
查看>>
PK BAT,运营商大数据其实更有价值
查看>>
技术是OA软件的生命力 关注技术正确选型
查看>>
智慧城市重点项目显著推进 市民参与程度尚待提高
查看>>
软件工程之软件测试
查看>>
思科宣布计划收购CliQr
查看>>
微软狠挖甲骨文墙脚:从Oracle迁移到SQL Server免费!
查看>>
欧洲最大光伏企业宣布破产 中国市场暂时安全
查看>>
研究表明Web充斥着存在漏洞的过期JavaScript库
查看>>
云计算不能修复应用程序性能差的问题
查看>>
Chrome测试新加密技术 量子计算机也没办法
查看>>