当前位置:   article > 正文

python学习:pyqt5

pyqt5

1、安装所需库

  1. pip install pyqt5
  2. pip install pyqt5 -tools

2、导入所需库

  1. # 导入所需库
  2. import sys
  3. from PyQt5.QtWidgets import QApplication, QMainWindow, QLabel, QVBoxLayout, QWidget
  4. from PyQt5.QtCore import QThread, pyqtSignal

3、多线程举例

  1. # 定义一个继承自QThread的Worker类,用于在后台执行计数任务
  2. class Worker(QThread):
  3. # 定义一个信号,用于将计数值发送到主线程
  4. update_label = pyqtSignal(str)
  5. def run(self):
  6. # 在run方法中执行计数任务
  7. for i in range(10):
  8. # 发射信号,将计数值发送到主线程
  9. self.update_label.emit(f"计数: {i}")
  10. # 暂停1秒
  11. self.sleep(1)

4、定义一个继承自QMainWindow的主窗口类

  1. class MainWindow(QMainWindow):
  2. def __init__(self):
  3. super().__init__()

5、初始化UI

self.initUI()

6、基本窗口模块

  1. def initUI(self):
  2. # 设置窗口标题
  3. self.setWindowTitle('PyQt5示例')
  4. # 创建一个垂直布局
  5. layout = QVBoxLayout()
  6. # 创建一个标签,显示欢迎信息
  7. self.label = QLabel('不吃橘子的橘猫')
  8. layout.addWidget(self.label) # 确保将标签添加到布局中
  9. # 创建一个容器,将布局添加到容器中
  10. container = QWidget()
  11. container.setLayout(layout)
  12. # 将容器设置为窗口的中心部件
  13. self.setCentralWidget(container)
  14. # 创建一个Worker实例
  15. self.worker = Worker()
  16. # 将Worker的信号连接到主线程的槽函数
  17. self.worker.update_label.connect(self.update_label_text)
  18. # 启动Worker线程
  19. self.worker.start()
  20. # 定义一个槽函数,用于更新标签的文本
  21. def update_label_text(self, text):
  22. if self.first_update: # 如果是第一次更新,则显示欢迎消息
  23. self.first_update = False
  24. return
  25. self.label.setText(text)

7、程序入口

  1. if __name__ == '__main__':
  2. # 创建应用程序实例
  3. app = QApplication(sys.argv)
  4. # 创建主窗口实例
  5. mainWin = MainWindow()
  6. # 显示主窗口
  7. mainWin.show()
  8. # 运行应用程序
  9. sys.exit(app.exec_())

8、多线程完整示例1

  1. import sys
  2. from PyQt5.QtWidgets import QApplication, QMainWindow, QLabel, QVBoxLayout, QWidget
  3. from PyQt5.QtCore import QThread, pyqtSignal
  4. class Worker(QThread):
  5. update_label = pyqtSignal(str)
  6. def run(self):
  7. for i in range(10):
  8. self.update_label.emit(f"计数: {i}")
  9. self.sleep(1)
  10. class MainWindow(QMainWindow):
  11. def __init__(self):
  12. super().__init__()
  13. self.initUI()
  14. self.first_update = True # 添加一个变量来检查是否是第一次更新
  15. def initUI(self):
  16. # 设置窗口标题
  17. self.setWindowTitle('PyQt5示例')
  18. # 创建一个垂直布局
  19. layout = QVBoxLayout()
  20. # 创建一个标签,显示欢迎信息
  21. self.label = QLabel('不吃橘子的橘猫')
  22. layout.addWidget(self.label) # 确保将标签添加到布局中
  23. # 创建一个容器,将布局添加到容器中
  24. container = QWidget()
  25. container.setLayout(layout)
  26. # 将容器设置为窗口的中心部件
  27. self.setCentralWidget(container)
  28. # 创建一个Worker实例
  29. self.worker = Worker()
  30. # 将Worker的信号连接到主线程的槽函数
  31. self.worker.update_label.connect(self.update_label_text)
  32. # 启动Worker线程
  33. self.worker.start()
  34. # 定义一个槽函数,用于更新标签的文本
  35. def update_label_text(self, text):
  36. if self.first_update: # 如果是第一次更新,则显示欢迎消息
  37. self.first_update = False
  38. return
  39. self.label.setText(text)
  40. if __name__ == '__main__':
  41. app = QApplication(sys.argv)
  42. mainWin = MainWindow()
  43. mainWin.show()
  44. sys.exit(app.exec_())

9、画一个搜索框

  1. import sys
  2. from PyQt5.QtWidgets import QApplication, QPushButton, QLineEdit, QVBoxLayout, QWidget, QMainWindow
  3. from PyQt5.QtCore import Qt
  4. class MainWindow(QMainWindow):
  5. def __init__(self):
  6. super().__init__()
  7. self.initUI()
  8. def initUI(self):
  9. # 设置窗口属性
  10. self.setWindowTitle("搜索框")
  11. self.setGeometry(100, 100, 401, 301)
  12. # 创建按钮和搜索框
  13. self.search_button = QPushButton("搜索", self)
  14. self.search_button.clicked.connect(self.showSearchDialog)
  15. self.search_box = QLineEdit(self)
  16. self.search_box.hide()
  17. # 布局管理器
  18. layout = QVBoxLayout()
  19. layout.addWidget(self.search_button)
  20. layout.addWidget(self.search_box)
  21. # 创建主窗口的中央部件
  22. self.central_widget = QWidget(self)
  23. self.central_widget.setLayout(layout)
  24. self.setCentralWidget(self.central_widget)
  25. def showSearchDialog(self):
  26. self.search_box.show()
  27. if __name__ == "__main__":
  28. app = QApplication(sys.argv)
  29. window = MainWindow()
  30. window.show()
  31. sys.exit(app.exec_())

10、页面例子

  1. import sys
  2. from PyQt5.QtWidgets import QApplication, QMainWindow, QPushButton, QLineEdit, QVBoxLayout, QWidget
  3. class MainWindow(QMainWindow):
  4. def __init__(self):
  5. super().__init__()
  6. # 设置窗口标题
  7. self.setWindowTitle("页面例子")
  8. # 创建四个按钮
  9. self.start_button = QPushButton("开始", self)
  10. self.search_button = QPushButton("搜索", self)
  11. self.settings_button = QPushButton("设置", self)
  12. self.author_button = QPushButton("作者", self)
  13. # 创建搜索框
  14. self.search_box = QLineEdit(self)
  15. self.search_box.hide()
  16. # 设置布局
  17. layout = QVBoxLayout()
  18. layout.addWidget(self.start_button)
  19. layout.addWidget(self.search_button)
  20. layout.addWidget(self.settings_button)
  21. layout.addWidget(self.author_button)
  22. layout.addWidget(self.search_box)
  23. container = QWidget()
  24. container.setLayout(layout)
  25. self.setCentralWidget(container)
  26. # 连接信号和槽
  27. self.search_button.clicked.connect(self.show_search_box)
  28. def show_search_box(self):
  29. if self.search_box.isVisible():
  30. self.search_box.hide()
  31. else:
  32. self.search_box.show()
  33. if __name__ == "__main__":
  34. app = QApplication(sys.argv)
  35. window = MainWindow()
  36. window.show()
  37. sys.exit(app.exec_())

11、与pyvisa联动:

  1. import sys
  2. from PyQt5.QtWidgets import QApplication, QWidget, QPushButton
  3. from PyQt5.QtCore import QThread, pyqtSignal
  4. import pyvisa
  5. import time
  6. class ControlVoltageThread(QThread):
  7. finished = pyqtSignal()
  8. def __init__(self, function):
  9. super().__init__()
  10. self.function = function
  11. def run(self):
  12. self.function()
  13. self.finished.emit()
  14. def control_voltage_sequence1():
  15. rm = pyvisa.ResourceManager()
  16. instrument = rm.open_resource('USB0::0x2EC7::0x6700::802260084767510008::INSTR')
  17. # 逐渐增加电压值至10V
  18. for voltage in range(0, 11):
  19. instrument.write("VOLT {}".format(voltage))
  20. time.sleep(0.5) # 每0.5秒增加一个单位的电压
  21. # 维持电压值为10V两秒
  22. time.sleep(2)
  23. # 逐渐减少电压值至0V
  24. for voltage in range(10, -1, -1):
  25. instrument.write("VOLT {}".format(voltage))
  26. time.sleep(0.5) # 每0.5秒减少一个单位的电压
  27. # 维持电压值为0V五秒
  28. time.sleep(5)
  29. # 获取电压读数
  30. print(instrument.query("MEAS:VOLT?"))
  31. def control_voltage_sequence2():
  32. rm = pyvisa.ResourceManager()
  33. instrument = rm.open_resource('USB0::0x2EC7::0x6700::802260084767510008::INSTR')
  34. # 设置电压为5V,持续两秒
  35. instrument.write("VOLT 5")
  36. time.sleep(2)
  37. # 设置电压为10V,持续两秒
  38. instrument.write("VOLT 10")
  39. time.sleep(2)
  40. # 设置电压为15V,持续两秒
  41. instrument.write("VOLT 15")
  42. time.sleep(2)
  43. # 设置电压为10V,持续两秒
  44. instrument.write("VOLT 10")
  45. time.sleep(2)
  46. # 设置电压为5V,持续两秒
  47. instrument.write("VOLT 5")
  48. time.sleep(2)
  49. # 获取电压读数
  50. print(instrument.query("MEAS:VOLT?"))
  51. class MainWindow(QWidget):
  52. def __init__(self):
  53. super().__init__()
  54. self.initUI()
  55. def initUI(self):
  56. self.setWindowTitle('电压控制')
  57. self.start_button = QPushButton('启动', self)
  58. self.start_button.clicked.connect(self.on_start_button_clicked)
  59. self.start_button.resize(self.start_button.sizeHint())
  60. self.start_button.move(50, 50)
  61. self.setGeometry(300, 300, 200, 150)
  62. def on_start_button_clicked(self):
  63. self.thread1 = ControlVoltageThread(control_voltage_sequence1)
  64. self.thread1.finished.connect(self.on_thread1_finished)
  65. self.thread1.start()
  66. self.thread2 = ControlVoltageThread(control_voltage_sequence2)
  67. self.thread2.finished.connect(self.on_thread2_finished)
  68. self.thread2.start()
  69. def on_thread1_finished(self):
  70. print("线程1完成")
  71. def on_thread2_finished(self):
  72. print("线程2完成")
  73. if __name__ == '__main__':
  74. app = QApplication(sys.argv)
  75. mainWin = MainWindow()
  76. mainWin.show()
  77. sys.exit(app.exec_())

上接(NIMAX及pyvisa):https://blog.csdn.net/weixin_73011353/article/details/137994653icon-default.png?t=N7T8https://blog.csdn.net/weixin_73011353/article/details/137994653

12、快捷键:

Ctrl + Space

代码自动补全

Ctrl + /

注释/取消注释

Ctrl + D

复制当前行或所选内容

Ctrl + Y

删除当前行

Ctrl + Z

撤销

Ctrl + Shift + Z

反撤销

Ctrl + N

快速打开类

Ctrl + Shift + N

快速打开文件

Ctrl + Alt + Left/Right

后退/前进

Ctrl + E

最近打开的文件列表

Shift + F6

重命名

Ctrl + Alt + M

提取方法

Ctrl + Alt + V

提取变量

Shift + F10

运行

Shift + F9

调试

Ctrl + Shift + F10

运行上次运行的配置

Ctrl + Shift + F

在路径中查找

Ctrl + Shift + R

在路径中替换

Ctrl + F

在当前文件中查找

Ctrl + R

在当前文件中替换

Alt + 9

打开版本控制工具窗口

Ctrl + K

提交代码

Ctrl + T

更新项目

Alt + Enter

显示上下文操作和快速修复

Ctrl + Shift + A

查找操作

Ctrl + Shift + F12

最大化编辑器(隐藏其他窗口)

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号