白月黑羽网站:http://www.byhy.net/tut/py/gui/qt_01/ 白月黑羽视频:https://www.bilibili.com/video/BV1cJ411R7bP?p=1 官方文档:https://doc.qt.io/qtforpython/PySide6/QtWidgets/index.html

PySide2和PyQt5 区别主要在于开源协议,前者随便用,后者不可商用。目前版本号都是6,主要也是为了让他们保持一致,所以pyside2直接更新到pyside6 。白月黑羽讲解的版本是6,其实和2区别不是很大,很容易过渡过去。

用到的主要知识点就是 Python的类

安装

  1. pip install pyside6

image.png控件说明

QApplication 提供了整个图形界面程序的底层管理功能,比如:初始化、程序入口参数的处理,用户事件(对界面的点击、输入、拖拽)分发给各个对应的控件,等等…

QMainWindowQPlainTextEditQPushButton 是3个控件类,分别对应界面的主窗口、文本框、按钮 。他们都是控件基类对象QWidget的子类。要在界面上 创建一个控件 ,就需要在程序代码中 创建 这个 控件对应类 的一个 实例对象。

比如 下面代码的 第 3 5 10 15 行,需要提前实力对象,另外参数的位置是相对于父级窗口,具体位置见下图说明。

  1. from PySide6.QtWidgets import QApplication, QMainWindow, QPushButton, QPlainTextEdit, QMessageBox
  2. class Stats():
  3. def __init__(self):
  4. self.window = QMainWindow()
  5. self.window.resize(500, 400)
  6. self.window.move(300, 300)
  7. self.window.setWindowTitle('薪资统计')
  8. self.textEdit = QPlainTextEdit(self.window)
  9. self.textEdit.setPlaceholderText("请输入薪资表")
  10. self.textEdit.move(10, 25)
  11. self.textEdit.resize(300, 350)
  12. self.button = QPushButton('统计', self.window)
  13. self.button.move(380, 80)
  14. self.button.clicked.connect(self.handleCalc)
  15. def handleCalc(self):
  16. info = self.textEdit.toPlainText()
  17. # 薪资20000 以上 和 以下 的人员名单
  18. salary_above_20k = ''
  19. salary_below_20k = ''
  20. for line in info.splitlines():
  21. if not line.strip():
  22. continue
  23. parts = line.split(' ')
  24. # 去掉列表中的空字符串内容
  25. parts = [p for p in parts if p]
  26. name, salary, age = parts
  27. if int(salary) >= 20000:
  28. salary_above_20k += name + '\n'
  29. else:
  30. salary_below_20k += name + '\n'
  31. QMessageBox.about(self.window,
  32. '统计结果',
  33. f'''薪资20000 以上的有:\n{salary_above_20k}
  34. \n薪资20000 以下的有:\n{salary_below_20k}'''
  35. )
  36. app = QApplication([])
  37. stats = Stats()
  38. stats.window.show()
  39. app.exec_()

image.png

使用方法

如果让界面和代码进行关联呢?通常是定义一个函数A,当信号(点击,输入等)发生,使其与函数A进行关联。

  1. def ABC():
  2. print('点击统计按钮')
  3. button.clicked.connect(ABC)

意思就是说,按钮被点击时,让函数ABC来处理。这里的打印是打印在终端上

QT Designer

可视化的方式创建界面,一般安装好pyside之后,在 pyside的文件夹下的 designer.exe 文件点击就可以打开了。
image.png
用法和Axure类似,左侧功能,右侧类似于图层和属性,很简单。

ctrl+r 预览

常用空间

分类 动作 方法名 代码
QPushButton(按钮) 被点击 clicked button.clicked.connect(handleCalc)
改变文本 setText button.setText(text)
启用禁用 setEnabled button.setEnabled(True/False)
设置图标 setIcon button.setIcon(QIcon(‘logo.png’))
button.setIconSize(QSize(30, 30))