当前位置:   article > 正文

第7天 | 28天学会PyQt5,控件事件_pyqt5 控件事件

pyqt5 控件事件

事件,就是程序在运行中发生的事儿,桌面应用软件都是事件驱动的。事件可以是用户的操作,如鼠标点击或按键按下,也可以由系统产生,如定时关机。事件会触发相应的行为,即事件函数。

在事件模型中,有三个角色,分别是事件源、事件和事件目标。事件源就是发生了状态改变的对象,事件是这个对象状态的改变撞他改变的内容,事件目标是事件想作用的目标。事件源绑定事件处理函数,然后作用于事件目标身上。

事件源是状态发生变化的对象。它会生成事件。事件(对象)封装了事件源中状态的变动。事件接收者是要通知的对象。事件源对象将事件处理的工作交给事件接收者。

控件事件

在PyQt5中实现事件功能,有3个步骤,分别是:定义事件处理函数、选择事件类型、用connect(slot)方法进行绑定。有交互功能的控件,如按钮QPushButton、复选框QCheckBox和下拉列表QComboBox等,都有connect(slot)方法。slot参数为事件处理函数名称。

按钮选择了单击clicked事件类型之后,用connect(slot)方法绑定事件处理函数。不同类型的控件绑定相同的处理函数时,可先用控件的setProperty(name, any)方法,定义相同属性名称和不同值,其中name字符串,any为任何数据类型。

sender()方法会返回一个QObject对象,它为窗口事件的父类,通过property(name)方法获取属性值。根据不同的属性值执行不同的操作。QColorDialog.getColor()会弹出颜色对话框,

QFontDialog.getFont()弹出字体对话框。

程序清单:control_connect.py

  1. import sys
  2. from PyQt5.QtWidgets import QApplication, QWidget, QDesktopWidget,
  3. QPushButton, QColorDialog, QFontDialog
  4. # 继承QWidget
  5. class ControlEvent(QWidget):
  6. ID_COLOR = 1000
  7. ID_FONT = 1001
  8. def __init__(self):
  9. super().__init__()
  10. self.init_ui()
  11. def init_ui(self):
  12. # 创建一个关闭按钮
  13. close_btn = QPushButton(self)
  14. close_btn.setText("关闭窗口")
  15. close_btn.move(20, 20)
  16. # 选择事件类型,绑定关闭方法
  17. close_btn.clicked.connect(self.close_win)
  18. # 点击按钮弹出颜色对话框
  19. color_btn = QPushButton(self)
  20. color_btn.setProperty("id", self.ID_COLOR)
  21. color_btn.setText("颜色对话框")
  22. color_btn.move(20, 60)
  23. # 点击按钮弹出字体对话框
  24. font_btn = QPushButton(self)
  25. font_btn.setProperty("id", self.ID_FONT)
  26. font_btn.setText("字体对话框")
  27. font_btn.move(20, 100)
  28. # 绑定同一个函数
  29. color_btn.clicked.connect(self.open_dialog)
  30. font_btn.clicked.connect(self.open_dialog)
  31. # 调整窗口大小
  32. self.resize(900, 500)
  33. # 窗口居中
  34. self.center()
  35. # 窗口标题
  36. self.setWindowTitle("控件事件")
  37. # 显示窗口
  38. self.show()
  39. # 打开对话框
  40. def open_dialog(self):
  41. sender = self.sender()
  42. if sender.property("id") == self.ID_COLOR:
  43. col = QColorDialog.getColor()
  44. if col.isValid():
  45. print("选择的颜色为:%s" % col.name())
  46. else:
  47. font, ok = QFontDialog.getFont()
  48. if ok:
  49. print("选择的字体为:%s" % font.family())
  50. # 关闭窗口
  51. def close_win(self):
  52. self.close()
  53. # 实现居中
  54. def center(self):
  55. f = self.frameGeometry()
  56. c = QDesktopWidget().availableGeometry().center()
  57. f.moveCenter(c)
  58. self.move(f.topLeft())
  59. if __name__ == "__main__":
  60. app = QApplication(sys.argv)
  61. w = ControlEvent()
  62. sys.exit(app.exec_())

运行程序之后,弹出的窗口如下:

第7天 | 28天学会PyQt5,控件事件

好了,控件事件的内容就说到这了,关注我,下一节更精彩。

码字不易,你的关注和转发是对我最大的鼓励,谢谢!

一个当了10年技术总监的老家伙,分享多年的编程经验。想学编程的朋友,关注我,你就赚到了。我正在分享Python、前端、Java和App方面的干货了。赶紧来围观啊!!!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/酷酷是懒虫/article/detail/863766
推荐阅读
相关标签
  

闽ICP备14008679号