1. PySide2、PyQt5 都是基于著名的 Qt 库。
Qt库里面有非常强大的图形界面开发库,但是Qt库是C++语言开发的,PySide2、PyQt5可以让我们通过Python语言使用Qt。
但是 PySide2、PyQt5 这两者有什么区别呢?
可以形象地这样说: PySide2 是Qt的 亲儿子
, PyQt5 是Qt还没有亲儿子之前的收的义子。
两个库的使用,差别很小:它们的调用接口几乎一模一样。
2.接口
QApplication :
提供了整个图形界面程序的底层管理功能,比如:初始化、程序入口参数的处理,用户事件(对界面的点击、输入、拖拽)分发给各个对应的控件,等等…
QMainWindow、QPlainTextEdit、QPushButton:
是3个控件类,分别对应界面的主窗口、文本框、按钮他们都是控件基类对象QWidget的子类。
控件对象的 move 方法决定了这个控件显示的位置。设置相对位置
控件对象的 resize 方法决定了这个控件显示的大小。
3. 界面动作处理 (signal 和 slot)
在 Qt 系统中, 当界面上一个控件被操作时,比如 被点击、被输入文本、被鼠标拖拽等, 就会发出 信号
,英文叫 signal
。就是表明一个事件(比如被点击、被输入文本)发生了。
我们可以预先在代码中指定 处理这个 signal 的函数,这个处理 signal 的函数 叫做 slot
。文章来源:https://www.toymoban.com/news/detail-424784.html
4. 实战:统计薪资大于20000的人员:
薛蟠 4560 25
薛蝌 4460 25
薛宝钗 35776 23
薛宝琴 14346 18
王夫人 43360 45
王熙凤 24460 25
王子腾 55660 45
王仁 15034 65
尤二姐 5324 24
贾芹 5663 25
贾兰 13443 35
贾芸 4522 25
尤三姐 5905 22
贾珍 54603 35
from PySide2.QtWidgets import QApplication,QMainWindow,QPushButton,QPlainTextEdit,QMessageBox
#这个函数就定义的 signal 的函数;用于触发点击事件;
def handle_click():
into=textEdit.toPlainText()
salary_above_20K=''
salary_below_20k=''
for line in into.splitlines():
if not line.strip(): #去掉前后的多余字符
continue
parts=line.split(' ')#以空格分割;
parts=[p for p in parts if p] #去掉空字符
name,salary,age=parts
if int(salary)>=20000:
salary_above_20K+=name+'\n'
else:
salary_below_20k+=name+'\n'
QMessageBox.about(window,"统计结果",f"薪资20000以上的人有:\n{salary_above_20K}\n薪资20000以下的人有:\n{salary_below_20k}")
app=QApplication([])
window=QMainWindow()
window.move(300,310)
window.resize(600,600)
window.setWindowTitle("薪资统计")
#编辑界面:
textEdit=QPlainTextEdit(window)
textEdit.setPlaceholderText("请输入薪资表")
textEdit.move(10,25)
textEdit.resize(450,500)
#按钮:
button=QPushButton('统计',window)
button.move(480,100)
button.clicked.connect(handle_click) #button提交 ;触发点击事件
window.show() #显示界面;
app.exec_() #执行app
封装成类:
from PySide2.QtWidgets import QApplication,QMainWindow,QPushButton,QPlainTextEdit,QMessageBox
class Qt_demo():
def __init__(self):
self.window=QMainWindow()
self.window.resize(600,600)
self.window.move(500,500)
self.window.setWindowTitle("薪资统计")
self.textEdit=QPlainTextEdit(self.window)
self.textEdit.setPlaceholderText("请输入薪资表")#设置提示:
self.textEdit.move(10,25)
self.textEdit.resize(450,500)
self.button=QPushButton('统计',self.window)
self.button.move(480,100)
self.button.clicked.connect(self.handle_click)
pass
def handle_click(self):
info=self.textEdit.toPlainText() #输入信息;
salary_above_20k=''
salary_below_20k = ''
for line in info.splitlines():
if not line.strip():
pass
content=line.split(' ') #以空格分割字符;
content=[con for con in content if con]
name,salary,age=content
if int(salary)>=20000:
salary_above_20k+=name+'\n'
else:
salary_below_20k+=name+'\n'
QMessageBox.about(self.window,"统计结果",
f"薪资大于20k的人有:\n{salary_above_20k}\n"
f"薪资低于20k的人有:\n{salary_below_20k}"
)
app=QApplication([])
Qt_demo=Qt_demo()
Qt_demo.window.show()
app.exec_()
资料来源:一个案例 | 白月黑羽 (byhy.net)文章来源地址https://www.toymoban.com/news/detail-424784.html
到了这里,关于PyQt5的学习---01的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!