python图形开发GUI库pyqt5的详细使用方法及各控件的属性与方法

来源:脚本之家  责任编辑:小易  

这个和用不用python没啥关系,是数据来源的问题。 调用淘宝API,使用 api相关接口获得你想要的内容,我 记得api中有相关的接口,你可以看一下接口的说明。 用python做爬虫来进行页面数据的获龋 希望能帮到你。

本文主要列出来python图形开发GUI库pyqt5的窗体,控件属性与方法如果你想看看python图形开发GUI库pyqt5的基础使用方法可以查看我们的另一篇文章 python图形开发GUI库pyqt5的基本使用方法详解

方法/步骤 下载版本:PyQt5-5.4.1-gpl-Py3.4-Qt5.4.1-x64.exe 里面有个py3.4,不知道是不是一定要版本对应,但是这个命名中有py3.4,下载3.4版本的python就对了。 官网python3.4-64位的版本下载 https://www.python.org/downloads/release/pytho

基本框架

支持 当前Deadline7版本使用的是Python2.7+Qt5作为框架,来进行的开发,为了与之配合, 做定制项目开发的时候,也需要同样的版本搭配。 为此在网上搜索了一下,看到PyQt的官网,PyQt5只有针对Python3的安装包而没有针对Python2.7的, 似乎只有下

import sys from PyQt5.QtGui import * from PyQt5.QtCore import * from PyQt5.QtWidgets import * class Demo(QWidget): def __init__(self): super(Demo, self).__init__() # 设置主界面 # 设置控件 # 设置布局 # 设置信号 def main(self): # 槽函数 if __name__ == '__main__': app = QApplication(sys.argv) demo = Demo() demo.show() sys.exit(app.exec_())

QLabel QLabel的作用: 占位符 显示文本 显示图片 放置gif动画 超链接 提示标记 Qlabel常用方法

程序启动画面

self.outputbox.setText( ) outputbox 为你的文件筐名称 函数参数为你想输出的东西,也就是你获取到的值!!!!

if __name__ == '__main__': app = QApplication(sys.argv) # 原有 splash = QSplashScreen() splash.setPixmap(QPixmap('images/splash.jpg')) splash.show() splash.showMessage('string', Qt.AlignBottom | Qt.AlignCenter, Qt.white) demo = Demo() # 原有 demo.show() # 原有 splash.finish(demo) sys.exit(app.exec_()) # 原有

一、设置主界面

赵丽颖的身高穿这双高跟是可以理解的,但天后王菲的这双无底高跟鞋,不得不说,我除了说服,还能说什么呢?!高跟鞋的时尚是平底鞋显示不出来的,也是平底鞋没有的气质感,不光是明星,想必每一个姑娘都梦想着自己能有自己的高跟鞋吧,相信女性都很爱高跟鞋,不管个头高矮,不管身材胖瘦,都想穿一双高跟鞋,因为高跟鞋的气场是平底鞋给不了的,因为高跟鞋也会给你一个不一样的自信,那接下来一起来看看明星们的奇葩高跟鞋,穿高跟都能穿出尴尬来的看到这双鞋说实话,你会有什么不一样的感受,我就想问问,你可能就是最时尚的“时尚达人”,是不是瞬间感觉脚好疼,别说穿的人了,看得人都会觉得很疼的,真是不理解这设计师的大脑,是真的最强大脑

self.setWindowTitle('title') # 设置窗体名称

我是一个不爱喝酒抽烟打牌的人,从来没去嫖过娼,虽说是个男人但是在朋友面前总有人拿我们开玩笑,说我们不像个男人,啥都不会白活了一辈子,听到这话也只是一笑了之,何必争高低,只要自己感觉良好就好。关于喝酒来说,按健康方面讲每天少喝点酒有益于健康,喝过了是伤身体的。我不喝酒不反对科学喝酒,但是最讨厌那些没有酒德的人,喝点酒就不知道东西南北。对于抽烟也反感,特别是那些在公众场合抽烟的人,一边抽烟一边到处乱吐,确实是让人感到不舒服。至于打牌来说我感觉是偶尔玩一次也无可厚非的,对于那些整天泡在赌场不顾家的,不是我说话难听死不足惜,特别是现在很多企业赌博倒闭,家庭是一人赌博坑害全家,甚至因为赌博倾家荡产的比比

self.setWindowIcon('path') # 设置窗体图标

这个就是伪命题,你买手机只看屏幕是不是大猩猩的?这个四代和三代的区别,小米6真就是没有划痕?如果是这样,那还卖什么膜?小米6和Z17哪个好,先不说屏幕,举个小例子,比如说大家都关心的续航问题,除了加大电池容量,如何让功耗实现最优的调配也是一个方向,这也就成为了很多手机厂商不得不面对的难题。有人测试实际应用的场景,专门对比了一下努比亚Z17、小米6、三星S8+、iPhone7这四款颇具人气的旗舰机型的快充功能以及通话场景中的续航能力。首先,我们将这四款手机的电量全部耗尽,然后给每部手机用其各自原装的充电器进行五分钟的充电时间。因为五分钟的时间比较符合急需充电又急需赶路的用户需求。不过,在我们给这

self.resize(300, 250) # 更改窗体大小

人食肉的天性,也是基于人类进化过程中的一个过程。但是人食肉,不是说的就是\"狗肉\"。现在一个人与自然的角度来看待,爱狗爱宠物的问题的话,这一个行为不反对,也不支持。因为人类的进化和发展到这样的一步,是自然的选择,我们无法改变人类去吃一些动物肉的现象,也更不可能去改变,这是一个必然的进化结果。当然,在属于没有思维意识的其他物种中,他们也是有情感的一类,而人本身就是感情丰富的人,因而也固然存在爱狗的人。我们也不能以这样的爱的道德绑架来说人类吃狗肉,动物肉就是一种残忍,需要法律保护等。这也必然不可能。不要违背自然的原则。只是在当今我们太多的商业导致人类过度的烂杀,破坏了很多自然的发展的平衡,因而很

self.size() # 获取窗体大小

self.width() # 获取窗体宽度

self.height() # 获取窗体高度

self.setFixedWidth(int width) # 设置窗体宽度

self.setFixedHeight(int height) # 设置窗体高度

self.setFixedSize(int width, int height) # 设置窗体大小

self.setGeometry(int x, int y, int width, int height) # 设置窗口位置

self.frameGeometry() # 获取窗口的大小和位置

self.move(int x, int y) # 设置窗口的位置

self.pos() # 获取窗口左上角坐标

self.setWindowFlags(QtCore.Qt.WindowMinimizeButtonHint) # 禁止最大化按钮

self.setFixedSize(self.width(), self.height()) # 禁止拉伸窗口大小

二、设置控件

1、QMessageBox消息框

1、基本格式

QMessageBox.information(QWidget, ‘Title', 'Content‘, buttons)

第一个参数填self,表示该信息框属于我们这里的Demo窗口;第二个参数类型为字符串,填入的是该信息框的标题;第三个参数类型也是字符串,填入的是信息框的提示内容;最后个参数为信息框上要添加的按钮。多个按钮之间用 | 来连接,常见的按钮种类有以下几种:

QMessageBox.Ok

QMessageBox.Yes

QMessageBox.No

QMessageBox.Close

QMessageBox.Cancel

QMessage.Open

QMessage.Save

2、各种类型的框

类型 名称
QMessageBox.information 消息框
QMessageBox.question 问答框
QMessageBox.warning 警告框
QMessageBox.critical 错误框
QMessageBox.about 关于框

3、与消息框进行交互

choice = QMessageBox.question(self, 'Title', 'Content', QMessageBox.Yes | QMessageBox.No) if choice == QMessageBox.Yes: pass elif choice == QMessageBox.No: pass

2、文本编辑框和文本浏览框

实例化控件

self.text_edit = QTextEdit(self) # 文本编辑框

self.text_browser = QTextBrowser(self) # 文本浏览框

设置信号

控件类型 信号 描述
QTextEdit textChanged 文本发生改变

控件方法

控件类型 方法 描述
QTextEdit setText(‘Content') 设置文本
QTextEdit toPlainText() 获取文本
QTextEdit setTextColor(color) 设置文本颜色
QTextEdit setFont(font) 设置字体

3、各种按钮

QPushButton,QToolButton,QRadioButton和QCheckBox均继承自QAbstractButton类

实例化控件

self.test_button = QPushButton('Test', self) # 实例化按钮

self.test_button = QPushButton('&Download',self) # 实例化按钮并设置快捷键为Alt+D

self.test_button = QToolButton(self) # 工具按钮(初始不能传入文本)

self.on_button = QRadioButton('on', self) # 单选按钮

self.checkbox1 = QCheckBox('Checkbox 1', self) # 复选框的三种状态:全选中、半选中和无选中

设置信号

控件类型 信号 描述
通用 Pressed 当鼠标指针在按钮上并按下左键时触发该信号
通用 Released 当鼠标左键被释放时触发该信号
通用 Clicked 当鼠标左键被按下然后释放时,或者快捷键被释放时触发该信号
通用 Toggled 当按钮的标记状态发生改变时触发该信号
QCheckBox stateChanged 复选框状态发生改变

控件方法

控件类型 方法 描述
通用 isDown() 提示按钮是否已按下
通用 isChecked() 提示按钮是否已经标记
通用 isEnable() 提示按钮是否可以被用户点击
通用 isCheckAble() 提示按钮是否为可标记的
通用 setAutoRepeat() 设置按钮是否在用户长按时可以自动重复执行
通用 setShortcut(‘Ctrl+D') 设置按钮快捷键
QPushButton setCheckable(True) 设置按钮是否已经被选中,如果设置True,则表示按钮将保持已点击和释放状态
QPushButton toggle() 在按钮状态之间进行切换
QPushButton setIcon(QIcon(‘button.png')) 设置图标
QPushButton setEnabled() 设置按钮是否可以使用,当设置为False时,按钮变成不可用状态,点击它不会发射信号
QPushButton isChecked() 判断按钮是否为标记状态,若是则返回True,不是则返回False
QPushButton setDefault() 设置按钮的默认状态
QPushButton setText(‘text') 设置按钮的显示文本
QPushButton text() 返回按钮的显示文本
QToolButton setArrowType(参数1) 设定button上显示的箭头类型
QToolButton setToolButtonStyle(参数2) 设定button文本和图标显示的样式
QRadioButton setChecked(True) 单选按钮设为选中状态
QCheckBox setChecked(True) 将复选框设为选中或无选中状态
QCheckBox setCheckState(Qt.Checked) 选中状态Qt.Checked, 无选中状态Qt.Unchecked和半选中状态Qt.PartiallyChecked
QCheckBox setTristate(True) 让一个复选框拥有三种状态
QCheckBox setCheckState(Qt.PartiallyChecked) 让一个复选框拥有三种状态
QCheckBox checkState() 获取当前复选框的状态,返回值为int类型,0为无选中状态,1为半选中状态,2为选中状态
参数1 箭头属性
Qt.NoArrow 无箭头
Qt.UpArrow 向上的箭头
Qt.DownArrow 向下的箭头
Qt.LeftArrow 向左的箭头
Qt.RightArrow 向右的箭头
参数2 样式
Qt.ToolButtonIconOnly 只显示图标
Qt.ToolButtonTextOnly 只显示文本
Qt.ToolButtonTextBesideIcon 文本在图标下面
Qt.ToolButtonTextUnderIcon 文本在图标上面
Qt.ToolButtonFollowStyle 未知…

4、标签

实例化控件

self.label = QLabel(self) 

控件方法

控件类型 方法 描述
QLabel setPixmap(QPixmap(‘on.png')) 给标签设置图片
QLabel setAlignment(Qt.AlignCenter) 设置标签对齐方式

5、单行文本框

实例化控件

self.lineedit = QLineEdit(self)

控件方法

控件类型 方法 描述
QLineEdit setFont(combobox.currentFont()) 设置字体
QLineEdit setPlaceholderText() 设置文本框显示文字
QLineEdit setMaxLength() 设置文本框所允许输入的最大字符数
QLineEdit setReadOnly() 设置文本为只读
QLineEdit setText() 设置文本框的内容
QLineEdit text() 返回文本框的内容
QLineEdit setDragEnable() 设置文本框是否接受拖动
QLineEdit selectAll() 全选
QLineEdit setFocus() 得到焦点
QLineEdit setAlignment(参数1) 按固定值方式对齐文本
QLineEdit setEchoMode(参数2) 设置文本框的显示格式
QLineEdit setValidator(参数3) 设置文本框的验证器(验证规则),将限制任意可能输入的文本
QLineEdit setInputMask(参数4) 设置掩码
参数1 功能
Qt.AlignLeft 水平方向靠左对齐
Qt.AlignRight 水平方向靠右对齐
Qt.AlignCenter 水平方向居中对齐
Qt.AlignJustify 水平方向调整间距两端对齐
Qt.AlignTop 垂直方向靠上对齐
Qt.AlignBottom 垂直方向靠下对齐
Qt.AlignVCenter 垂直方向居中对齐
参数2 功能
QLineEdit.Normal 正常显示所输入的字符,此为默认选项
QLineEdit.NoEcho 不显示任何输入的字符,常用于密码类型的输入,且长度保密
QLineEdit.Password 显示与平台相关的密码掩饰字符,而不是实际输入的字符
QLineEdit.PasswordEchoOnEdit 在编辑时显示字符,负责显示密码类型的输入
参数3 功能
QIntValidator 限制输入整数
QDoubleValidator 限制输入浮点数
QRegexpValidator 检查输入是否符合正则表达式
参数4 功能
000.000.000.000;_ ip地址,空白字符是‘_'
HH:HH:HH:HH:HH:HH; MAC地址
0000-00-00 日期,空白字符是空格
>AAAAA-AAAAA-AAAAA-AAAAA-AAAAA;# 许可证号,空白字符是‘_',所有字母都转换为大写

设置信号

控件类型 信号 描述
QLineEdit selectionChanged 只要选择改变了,这个信号就会发射
QLineEdit textChanged 当修改文本内容时,这个信号就会发射
QLineEdit editingFinished 当编辑文本结束时,这个信号就会发射

6、下拉选择框和数字调节框

实例化控件

self.combobox_1 = QComboBox(self) # 普通下拉框(无内容)

self.combobox_2 = QFontComboBox(self) # 字体下拉框(有字体选择)

self.spinbox = QSpinBox(self) # 数字调节框(默认范围0-99)

self.doublespinbox = QDoubleSpinBox(self) # 浮点数字调节框(默认范围0.00-99.99)

设置信号

控件类型 信号 描述
QComboBox currentIndexChanged 序号发生变化
QComboBox currentTextChanged 文本发生变化
QSpinBox valueChanged 数字发生变化

控件方法

控件类型 方法 描述
QComboBox addItem(self.choice) 添加一个选项
QComboBox addItems(self.choice_list) 添加多个选项
QComboBox currentIndex() 获取当前文本序号
QComboBox currentText() 获取当前文本
QComboBox currentFont() 获取当前字体
QDoubleSpinBox setDecimals(int) 设置小数位数
QSpinBox setRange(-99, 99) 设置范围
QSpinBox setSingleStep(1) 设置步长,即每次点击递增或递减多少值
QSpinBox setValue(66) 设置初始显示值
QSpinBox value() 获取值
QSpinBox setValue(value) 设置调节框的值

7、滑动条和旋钮

实例化控件

self.slider_1 = QSlider(Qt.Horizontal, self) # 水平滑动条

self.slider_2 = QSlider(Qt.Vertical, self) # 垂直滑动条

self.dial = QDial(self) # 旋钮

设置信号

控件类型 信号 描述
QSlider valueChanged 数值发生改变
QDial valueChanged 改变表盘数值

控件方法

控件类型 方法 描述
QSlider setRange(0, 100) 设置滑动条的范围
QSlider setMinimum(0) 设置最小值
QSlider setMaximum(100) 设置最大值
QSlider value() 获取值
QSlider setValue(value) 设置值
QDial setFixedSize(100, 100) 固定旋钮的大小
QDial setRange(0, 100) 设置表盘数值范围
QDial setMinimum(0) 设置最小值
QDial setMaximum(100) 设置最大值
QDial setNotchesVisible(True) 显示刻度

8、定时器和进度条

实例化控件

控件类型 信号 描述
QTimer timeout timer.start()结束时触发

控件方法

控件类型 方法 描述
QTimer isActive() 判断定时器是否处于激活状态
QTimer start(100) 启动计时器持续100毫秒
QTimer stop() 停止计时器
QTimer setSingleShot(True) 触发timeout信号后只调用一次update_func()
QProgressBar setMinimum(0) 设置最小值
QProgressBar setMaximum(100) 设置最大值
QProgressBar setRange(0, 100) 设置范围
QProgressBar setValue(value) 设置进度条当前值
QProgressBar reset() 重置进度条的值

9、数字显示屏

实例化控件

self.lcd = QLCDNumber(self) # 数字显示屏

控件方法

控件类型 方法 描述
QLCDNumber setDigitCount(10) 设置显示多少位数字
QLCDNumber display(1234567890) 显示数字
QLCDNumber setSegmentStyle(参数1) 设置显示屏数字样式
QLCDNumber setSmallDecimalPoint(True) 设置小数点的显示方式,若为True,则占位,若为False,则会单独占位
QLCDNumber display(0.123456789) 显示数字
QLCDNumber display(‘HELLO') 显示字母
QLCDNumber setMode(参数2) 更改数字显示方式
参数1 描述
QLCDNumber.Outline 0 让内容浮显,其颜色同显示屏背景颜色相同
QLCDNumber.Filled 1 让内容浮显,颜色同窗口标题颜色相同
QLCDNumber.Flat 2 让内容扁平化显示,颜色同窗口标题颜色相同
参数2 描述
QLCDNumber.Hex 0 十六进制
QLCDNumber.Dec 1 十进制
QLCDNumber.Oct 2 八进制
QLCDNumber.Bin 3 二进制

三、设置布局

1、实例化布局

v_layout = QVBoxLayout() # 垂直布局

h_layout = QHBoxLayout() # 水平布局

form_layout = QFormLayout() # 表单布局

grid_layout = QGridLayout() # 网格布局

2、给布局添加占位符|控件|布局

self.label.setAlignment(Qt.AlignCenter) # 设置居中方式

h_layout.addStretch(1) # 设置占位符

v_layout.addWidget(self.user_label) # 垂直布局添加控件

h_layout.addWidget(self.user_line) # 水平布局添加控件

all_v_layout.addLayout(v_layout) # 垂直布局添加垂直布局

all_h_layout.addLayout(h_layout) # 水平布局添加水平布局

form_layout.addRow(self.user_label, self.user_line) # 表单布局添加控件

grid_layout.addWidget(self.user_label, 0, 0, 1, 1) # 网格布局添加控件

grid_layout.addWidget(self.user_label, 0, 0) # 默认是1行1列

QGridLayout的addWidget()方法遵循如下语法形式:

addWidget(widget, row, column, rowSpan, columnSpan)

widget就是要添加的控件;row为第几行,0代表第一行;column为第几列,0代表第一列;rowSpan表示要让这个控件去占用几行(默认一行);columnSpan表示要让这个控件去占用几列(默认一列)。

3、设为整个窗口的最终布局方式

self.setLayout(all_h_layout)

四、各种对话框

1、颜色对话框和字体对话框

color = QColorDialog.getColor() # 颜色对话框(十六进制的值会保存在color变量中) if color.isValid(): # 判断color是否有效 self.text_edit.setTextColor(color) font, ok = QFontDialog.getFont() # 字体对话框 if ok: self.text_edit.setFont(font)

2、输入对话框

方法 用法
getItem() 从下拉框中获取选项输入
getInt() 获取整型值输入
getDouble() 获取浮点型值输入
getText() 获取字符串输入
getMultiLineText() 获取多行字符串输入

实例:

content, ok = QInputDialog.getText(self, 'title', 'content')

content, ok = QInputDialog.getInt(self, 'title', 'content')

content, ok = QInputDialog.getDouble(self, 'title', 'content')

content, ok = QInputDialog.getMultiLineText(self, 'title', 'content')

Item, ok = QInputDialog.getItem(self, 'title', 'content', list, 0, False)

getItem(parent, str, str, iterable, int, bool)方法需要多设置几个参数,前三个与getText()相同,第四个参数为要加入的选项内容,第五个参数为最初显示的选项,最后一个参数是选项内容是否可编辑。

3、文件对话框

path, _ = QFileDialog.getSaveFileName(self, 'title', './', 'Excel Files (*.xlsx;*.xls);;All Files (*)') # 选择保存文件

path, _ = QFileDialog.getOpenFileName(self, 'title', './', 'Excel Files (*.xlsx;*.xls);;All Files (*)') # 选择文件

path, _ = QFileDialog.getOpenFileNames(self, 'title', './', 'Excel Files (*.xlsx;*.xls);;All Files (*)') # 选择多个文件

path, _ = QFileDialog.getExistingDirectory(self, 'title', './') # 选择文件夹

参数:指定父类,文件对话框的标题,对话框打开时显示的路径,文件扩展名过滤器

其中设置文件扩展名过滤,用双分号间隔。

'All Files (*);;PDF Files (*.pdf);;Text Files (*.txt)'

五、界面关闭事件

def closeEvent(self, QCloseEvent): # 关闭事件函数 if not self.saved: # 如果未保存 choice = QMessageBox.question(self, '', 'Do you want to save the text?', QMessageBox.Yes | QMessageBox.No | QMessageBox.Cancel) if choice == QMessageBox.Yes: # 如果需要继续保存 self.saved_func() # 调用函数进行保存 QCloseEvent.accept() # 接受关闭事件 elif choice == QMessageBox.No: # 如果不需要继续保存 QCloseEvent.accept() # 接受关闭事件 else: QCloseEvent.ignore() # 忽略关闭事件

更多关于python图形开发GUI库pyqt5的使用方法请查看下面的相关链接

扩展阅读,根据您访问的内容系统为您准备了以下内容,希望对您有帮助。

Python的PYQT5和QML哪个好用

PyQt5不兼容PyQt4(尽管经验表明,将PyQt4的应用程序移植到PyQt5难度不是很大)。本节描述了两者之间的主要差异。

支持Python的版本

不支持较早的Python2.6之前的版本┊。

推荐使用特性

PyQt5不支持任何被标记为过时的或废弃的QT V5.0 的API。然而,还是可能有一些“漏网之鱼”。如果将来发现了,这些错误将被删除。

多个API

PyQt4支持许多不同的API版本(QString,QVariant等)。QVariant

PyQt5只支持V2版本的API。一个例外:对于QVariant ,去除了QPyNullVariant。

老式的信号和槽

PyQt4的旧式的信号和槽不再被支持。因此以下用法在PyQt5中已经不能使用:

QObject.connect()

QObject.emit()

SIGNAL()

SLOT()

所有那些含有参数,并且对返回结果调用SIGNAL()或SLOT()的方法不再被支持。绑定信号与调用函数总是等效的。

此外,另一个差异是增加了下面的函数:

disconnect() 断开所有对 QObject实例的连接,不需要参数。

新风格的信号和槽

QT实现的信号与一个可选的参数作为两个独立的信号,一个与论点 和一个没有它。PyQt4暴露这两允许你连接到他们每个 。然而,当发射信号,你必须使用适当的参数 发出的信号数。

PyQt5暴露唯一的信号在所有指定参数。然而它 允许任何可选参数被省略时,发射信号。

不同于PyQt4,PyQt5支持在类中自定义属性、信号与槽,即使这个类没有继承自QObject(比如:混合类)。

QtDeclarative,QtScript和QtScriptTools模块

PyQt4的QtDeclarative,QtScript和QtScriptTools模块不再支持。这些已被替换为PyQt5的QtQml和QtQuick模块,PyQt5支持 Python对象创建QML。

QtGui模块

PyQt4的QtGui模块,在PyQt5中被拆分成三个模块:QtGui,QtPrintSupport和QtWidgets。

QtOpenGL模块

只有QGlContext,QGlFormat和QGlWidget类被PyQt5支持。

QtWebKit模块

PyQt4的QtWebKit模块被分成PyQt5的QtWebKit和QtWebkitWidgets模块。

pyqtconfig模块

PyQt4的pyqtconfig模块不支持。截面PyQt5扩展的API介绍了支持PyQt5 (例如提供第三方包qscintilla ),要建立在PyQt5。

dbus.mainloop.qt模块

PyQt4的dbus.mainloop.qt模块称为dbus.mainloop.PyQt5在 PyQt5。这使得他们可以并排安装。它们的功能是 相同。

QDataStream

的readuint8(),readint8(),writeuint8()和writeint8()方法解释值 读写数字。PyQt4中它们被解释为 单个字符的字符串。

QFileDialog

PyQt4的QFileDialog类的getOpenFileNameAndFilter(),getOpenFileNamesAndFilter()和getSaveFileNameAndFilter()方法,

在PyQt5中已更名为 getOpenFileName(),getOpenFileNames()和getSaveFileName()。

而PyQt4原来的getOpenFileName(),getOpenFileNames()和getSaveFileName()不再被PyQt5支持。

QGraphicsItemAnimation

对废弃的QGraphicsItemAnimation类的支持已被删除。如果移植现有的PyQt4应用程序,首先考虑用QPropertyAnimation替换。

QMatrix

对废弃的QMatrix类的支持已被删除。如果移植现有的PyQt4应用程序,首先考虑用QTransform替换。

QPyTextObject

PyQt4的QPyTextObject,是作为一个无法定义一个继承多个Qt类的Python类的变通的解决方法。PyQt5 支持定义一个Python类,来继承多个Qt类,只要他们已经在C++声明为Q_DECLARE_INTERFACE 。所以,QPyTextObject没有在PyQt5中实现。

QSet

PyQt4,套装在Python中的V2和V3一组Python 列表实现。在PyQt5套装总是作为一个集实现。

pyuic5

pyuic5不支持pyqt3——包装国旗pyuic4。

pyrcc5

pyrcc5不支持- PY2和- PY3国旗pyrcc4。输出pyrcc5兼容所有版本的Python Python 2.6 入手。

多重继承

不像PyQt4 PyQt5类实现多重继承,合作。在其他的话总是做 PyQt5类下面的Python代码在等效 V3__init__方法(如kwds是一个未使用的关键词 参数字典):

super().__init__(**kwds)

这意味着,那些未使用的关键字的参数传递给__init__任何mixin类的方法。这些混合类必须合作,即 必须如果他们有自己做一个类似的电话__init__实现。

当使用多重继承PyQt4是常见的电话__init__的超类方法明确,例如:

class MyQObject(QObject, MyMixin):

def __init__(self, parent, mixin_arg):

QObject.__init__(self, parent)

MyMixin.__init__(self, mixin_arg)

# Other initialisation...

在上述将导致PyQt5mymixin __init__。被称为两 。而要实现:

class MyQObject(QObject, MyMixin):

def __init__(self, **kwds):

super().__init__(**kwds)

# Other initialisation...

请注意,如果没有其他的初始化做那么__init__方法不需要。

混合类应实施如下:

class MyMixin:

def __init__(self, mixin_arg, **kwds):

super().__init__(**kwds)

# Other initialisation...追问也就是说PyQt5更好吗支持与QML的混写

Python安装PyQt5时遇到这个问题该怎么解决

Linux系统下Qt5编译好的程序在未安装Qt的系统下运行会报以下错误:

This application failed to start because it could not find or load the Qt platform plugin "xcb".

Reinstalling the application may fix this problem.

出现这个错误,主要是因为qt5为了在多平台下更方便移植,使用了一种新的技术-----platform abstraction system (QPA),而它中的库又依赖于Qt5中的一个库文件libQt5DBus.so.5,所以,只要打包时只要加上这个文件就可以了。

linux下qt5程序打包步骤如下

1、把以下7个库文件放到/usr/lib目录下

libQt5Widgets.so.5

libQt5Gui.so.5

libQt5Core.so.5

libicui18n.so.51

libicuuc.so.51

libicudata.so.51

libQt5DBus.so.5

2、拷贝Qt5安装目录中的platforms目录,使它和你的Qt程序同级目录

现在你可以双击你的程序运行了呵呵

python-pyqt5 软件包是做什么的,我该如何安装呢。我的系统是xubuntu1404 请求

pyqt5 python的GUI开发包。也就是跨平台的图形化开发包

http://www.riverbankcomputing.com/software/pyqt/download5

下载 安装即可

python pyqt5 qthread有哪些方法

用例子说明吧,常用的不多

PyQt中的线程类 QtCore.QThread ,使用时继承QThread类

启动界面的线程暂称为UI线程。界面执行命令时都在自己的UI线程中。

如果在UI线程中执行网络连接和数据库操作等耗时的操作,界面会被卡住,Windows下有可能会出现“无响应”的警告。

阻塞UI线程会降低用户体验和应用稳定性。因此我们可以把耗时操作放在线程中去执行。

QThread代表一个线程,我们可以复写run函数来执行我们要的操作。

QThread可以使用 QtCore.pyqtSignal 来与界面交互和传输数据。

PyQt4 QThread 代码示例

•Python2.7

# -*- coding: utf-8 -*-

import sys

from PyQt4 import QtCore

from PyQt4.QtCore import QCoreApplication

from PyQt4.QtGui import QWidget, QPushButton, QApplication, QTextBrowser

class TimeThread(QtCore.QThread):

signal_time = QtCore.pyqtSignal(str, int) # 信号

def __init__(self, parent=None):

super(TimeThread, self).__init__(parent)

self.working = True

self.num = 0

def start_timer(self):

self.num = 0

self.start()

def run(self):

while self.working:

print "Working", self.thread()

self.signal_time.emit("Running time:", self.num) # 发送信号

self.num += 1

self.sleep(1)

class TimeDialog(QWidget):

def __init__(self):

super(TimeDialog, self).__init__()

self.timer_tv = QTextBrowser(self)

self.init_ui()

self.timer_t = TimeThread()

self.timer_t.signal_time.connect(self.update_timer_tv)

def init_ui(self):

self.resize(300, 200)

self.setWindowTitle('TimeDialog')

self.timer_tv.setText("Wait")

self.timer_tv.setGeometry(QtCore.QRect(10, 145, 198, 26))

self.timer_tv.move(0, 15)

btn1 = QPushButton('Quit', self)

btn1.setToolTip('Click to quit')

btn1.resize(btn1.sizeHint())

btn1.move(200, 150)

btn1.clicked.connect(QCoreApplication.instance().quit)

start_btn = QPushButton('Start', self)

start_btn.setToolTip("Click to start")

start_btn.move(50, 150)

self.connect(start_btn, QtCore.SIGNAL("clicked()"), self.click_start_btn)

def click_start_btn(self):

self.timer_t.start_timer()

def update_timer_tv(self, text, number):

self.timer_tv.setText(self.tr(text + " " + str(number)))

if __name__ == '__main__':

app = QApplication(sys.argv)

time_dialog = TimeDialog()

time_dialog.show()

sys.exit(app.exec_())

QThread中使用的信号 signal_time = QtCore.pyqtSignal(str, int) 指定了参数str和int

发送信号 self.signal_time.emit("Running time:", self.num)

外部接收信号 self.timer_t.signal_time.connect(self.update_timer_tv)

信号连接到方法 update_timer_tv(self, text, number) ,注意信号与方法的参数要一一对应

使用中我们可以定义多种不同的信号 QtCore.pyqtSignal

启动线程,调用 start()

  • 本文相关:
  • python图形开发gui库pyqt5的基本使用方法详解
  • 关于python pyqt5安装失败问题的解决方法
  • python3+pycharm+pyqt5环境搭建步骤图文详解
  • python3+pyqt5+qt designer实现堆叠窗口部件
  • python3使用pyqt5制作一个超简单浏览器的实例
  • python3 安装pyqt5及exe打包图文教程
  • python pyqt5实现的简易计算器功能示例
  • python 中pyqt5 点击主窗口弹出另一个窗口的实现方法
  • python pyqt5标准对话框用法示例
  • python3使用pyqt5制作简单的画板/手写板实例
  • python安装图文教程 pycharm安装教程
  • 对python3 pyc 文件的使用详解
  • python数据可视化:顶级绘图库plotly详解
  • python学习笔记之os模块使用总结
  • pandas 对group进行聚合的例子
  • python面向对象实现一个对象调用另一个对象操作示例
  • python本地与全局命名空间用法实例
  • python文字转语音的实例代码分析
  • django框架实现模板中获取request 的各种信息示例
  • selenium+python自动化测试之页面元素定位
  • Python的PYQT5和QML哪个好用
  • 如何使用python3.5.2+pyqt5编写无阻塞多线程GUI
  • Python安装PyQt5时遇到这个问题该怎么解决
  • python-pyqt5 软件包是做什么的,我该如何安装呢。...
  • python pyqt5 qthread有哪些方法
  • python pyqt5 什么窗口可以显示变化的数据
  • 如何安装python3-pyqt5
  • pyqt5支持python2.7吗
  • python如何用pyqt5打开视频(还有PPT)并输出到QLa...
  • pyqt5如何把内容输出到界面上(Python)
  • 免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved