当前位置: 首页 > news >正文

电脑端网站和手机网站区别番禺市桥网站建设公司

电脑端网站和手机网站区别,番禺市桥网站建设公司,苏州要服务网站建设,四会市城乡规划建设局网站本文讲解信号与槽的连接机制#xff0c;详细示范各种类型的信号/槽连接的实现方法#xff0c;这是图形用户界面的核心内容。还将介绍面向对象的程序设计#xff0c;这是图形用户界面的基本思想目录1. 信号与槽#xff08;Signals and slots#xff09;信号与槽机制是 PyQt…本文讲解信号与槽的连接机制详细示范各种类型的信号/槽连接的实现方法这是图形用户界面的核心内容。还将介绍面向对象的程序设计这是图形用户界面的基本思想目录1. 信号与槽Signals and slots信号与槽机制是 PyQt 的核心机制用于对象之间的通信也就是实现函数之间的自动调用。1.1 信号与槽的原理简单地说将信号与槽函数连接后当信号被触发时槽函数将被自动调用。分析这个过程涉及到几个基本概念和关系信号信号可以是一个动作也可以是对象的一种状态用于触发所连接的槽。槽槽就是一个函数可以由连接的信号触发。发射信号信号被发射时自动调用信号连接的槽函数。通常在对象的状态改变时发射信号。信号可以带有参数但必须与槽函数的参数相对应。一个信号可以连接多个槽函数多个信号也可以连接到一个槽函数。一个信号可以连接到另一个信号上。很多窗口部件控件内置了一下信号和槽可以直接调用。也可以按需求自定义信号和槽。1.2 信号发送者与槽的接收者信号的发送者通常是一个控件对象在控件对象的状态发生变化时发送信号。常见的发送者是图形窗口中的各种控件对象但也可以是动作对象。槽的接收者通常也是控件对象。槽函数是一个自定义的槽函数或控件内置的槽函数。一般地槽函数也有一个对象作为主体即对于接受者这个控件对象执行函数定义的操作。例如槽函数执行的功能是关闭哪么究竟是关闭那个控件呢关闭对象就是接受者。为了方便讲解信号与槽的连接我们用 QtDesigner 在上节设计的图形窗口 uiDemo3.ui 的基础上增加几个按钮对象和文本行编辑对象打开 PyCharm从 Tools - ExternalTools - QtDesigner 打开 QtDesigner打开 uiDemo3.ui 文件。鼠标点击选中 QtDesigner 左侧控件栏 Buttons 中的 PushButton按住鼠标不放将其拖动到中间的图形界面后松开鼠标就在图形界面中创建了一个 PushButton 控件。鼠标点击选中 QtDesigner 左侧控件栏 InputWidget 中的 LineEdit按住鼠标不放将其拖动到中间的图形界面后松开鼠标就在图形界面中创建了一个 LineEdit 控件。重复以上步骤再建立几个 PushButton 控件和 LineEdit 控件。注意在 QtDesigner 右侧 “对象查看器” 中所显示的控件名称和属性多个 PushButton、LineEdit 被自动赋予不同的命名objectName如LineEdit_1、LineEdit_2、LineEdit_3这就如同桌子有几个抽屉分别标记为 “抽屉1”、“抽屉2”、“抽屉3” 以便识别。控件的名称和其它属性都可以在 “属性编辑器” 中编辑修改。鼠标选中在图形界面中创建的 PushButton 控件或 LineEdit 控件可以拖动控件调整位置。鼠标双击 PushButton 按钮可以编辑按钮控件的标签即按钮上的显示内容。为了便于讲解本例将各 PushButton 控件的显示内容text 属性修改为“1# 按钮” ~ “4# 按钮”将各 LineEdit 控件的显示内容text 属性修改为“文本编辑行-1” ~ “文本编辑行-3”。将这个应用程序图形界面另存为 uiDemo4.ui其预览效果如下2. QtDesigner 建立信号与槽的连接2.1 信号与槽的连接不同的发送者与接收者槽函数为控件的内置函数QtDesigner 提供了便捷和直观的信号/槽编辑方法。本例介绍不同的发送者与接收者槽函数为控件的内置函数的操作方法。不同类型的控件分别内置了若干方法例如 QPushButton 控件内置的方法包括点击、选中、状态变化、显示菜单等而 QLineEdit 控件内置的方法包括清空、复制、剪切、粘贴、全选、撤销操作等。使用控件内置的方法作为槽函数可以直接调用不需要对函数进行定义。我们所设计的功能是当点击按钮控件 “pushButton_1” 时清空文本编辑控件 “lineEdit_1” 的显示内容。注意我们称按钮控件为 “lineEdit_1” 而不是 “文本编辑行-1”这是因为 lineEdit_1 才是控件名称在程序中是不变的而 “文本编辑行-1” 只是显示内容可以在程序中修改。QtDesigner 设置信号/槽的连接的操作步骤如下1选择菜单项 “Edit” - 编辑信号/槽或者通过快捷键 F4 或在工具栏选择进入信号/槽编辑模式。2选中控件对象发送者此处为按钮控件 “pushButton_1”鼠标左键长按不放该按钮控件变为浅红色。鼠标左键继续长按不放并移动鼠标当鼠标移出控件对象区域后出现一条带箭头的红线和一个红色的接地符号。鼠标左键继续长按不放并拖动鼠标到控件对象 “lineEdit_1”松开鼠标左键就建立了以控件对象 “pushButton_1” 为发送者、控件对象 “lineEdit_1” 为接收者的信号/槽连接。此时控件对象 “pushButton_1” 和 “lineEdit_1” 都变为浅红色带箭头的红线从 “pushButton_1” 出发指向 “lineEdit_1” 结束。3同时弹出对话框 “配置连接 - QtDesigner”对话框的左侧显示发送者控件的信号选项对话框的右侧显示接收者的控件选项。 根据功能要求触发信号为按钮 “pushButton_1” 被点击从对话框左侧选中 “clicked()”根据功能要求收到信号后动作是清空文本编辑控件 “lineEdit_1”从对话框右侧选中 “clear()”点击对话框下方的按钮 “OK”完成该信号/槽连接的配置。2.2 信号与槽的连接不同的发送者与接收者槽函数为自定义函数本例介绍不同的发送者与接收者槽函数为自定义函数的操作方法。在 2.1 中介绍了使用控件内置的方法作为槽函数可以直接调用不需要对函数进行定义。程序设计中的核心功能通常是程序员根据需求开发的自定义函数。使用自定义函数作为槽函数一方面当然是要编写自定义函数另一方面要将自定义函数添加到槽函数配置连接表中。我们所设计的功能是当点击按钮控件 “pushButton_2” 时清空文本编辑控件 “lineEdit_2” 的显示内容并显示文本信息 “current signal: click pushButton_2”。在主程序中要编写一个自定义函数实现该功能将该自定义函数命名为 click_pushButton_2()。注意我们编写的自定义函数 click_pushButton_2()虽然功能只是对文本编辑控件 “lineEdit_2” 进行操作但对于自定义函数也可以完成任意的其它功能对其它控件按照控件名称进行操作。因此该槽函数的接收者并不是文本编辑控件 “lineEdit_2”而是主窗口控件 “MainWindow”。QtDesigner 设置信号/槽的连接的操作步骤如下首先要在 QtDesigner 将自定义函数添加到槽函数配置连接表中——非常重要。网上的很多文章都没有讲具体实现方法这个操作的入口也很难找到。1在 QtDesigner 右侧上方的 “对象查看器”选中 MainWindow 或其它顶层对象单击鼠标右键唤出下拉菜单选择 “改变信号/槽” 弹出 “MainWindow 的信号/槽” 对话框对话框的上方显示槽的选项下方显示信号选项。点击对话框上方 “槽” 选项框下部的绿色 “”系统在 “槽” 选项表的最后自动增加了一行 “slot1()”。这就是新增的自定义槽函数。点击选中 “slot1()”再鼠标双击就可以修改槽函数的函数名例如修改为 click_pushButton_2()。再点击对话框上方 “槽” 选项框下部的绿色 “”可以继续逐一添加自定义的槽函数。然后设置信号/槽的连接2选择菜单项 “Edit” - 编辑信号/槽或者通过快捷键 F4 或在工具栏选择进入信号/槽编辑模式。 选中控件对象发送者此处为按钮控件 “pushButton_2”长按鼠标左键并移动当鼠标移出控件对象区域后出现一条带箭头的红线和一个红色的接地符号。松开鼠标左键就建立了以控件对象 “pushButton_2” 为发送者、控件对象 “MainWindow” 为接收者的信号/槽连接。此时控件对象 “pushButton_2” 变为浅红色带箭头的红线从 “pushButton_2” 出发并不指向其它控件而是以一个接地符号结束。3同时弹出对话框 “配置连接 - QtDesigner”对话框的左侧显示发送者控件 “pushButton_2” 的信号选项对话框的右侧显示接收者 “MainWindow” 的控件选项。根据功能要求触发信号为按钮 “pushButton_2” 被点击从对话框左侧选中 “clicked()”对话框右侧接收者 “MainWindow” 的控件选项列表中显示了刚才添加的几个自定义函数选择 “click_pushButton_2()”点击对话框下方的按钮 “OK”完成该信号/槽连接的配置。最后别忘了要在主程序中编写自定义的函数。但这已不属于 QtDesigner 设计的内容了在此不再详述。类似地我们设计当点击按钮控件 “pushButton_3” 时在文本编辑控件 lineEdit_1显示当前系统日期在文本编辑控件 lineEdit_2显示当前系统时间在文本编辑控件 “lineEdit_3” 显示提示信息。在主程序中编写一个自定义函数 click_pushButton_3()并与 “pushButton_3” 建立信号/槽连接。这表明在自定义的子函数中可以同时操作多个控件对象进而可以实现用户定义的各种功能。2.3 信号与槽的连接相同的发送者与接收者槽函数为控件的内置函数本例介绍相同的发送者与接收者槽函数为控件的内置函数的操作方法。顾名思义相同的发送者与接收者就是说信号的发送者与槽函数的接收者是同一个控件对象。这是什么情况例如一个开关按钮有 “On/Off” 两种状态每按一次则按钮状态发生翻转。类似地选项框也有选中、未选中两种状态。特殊地点击按钮后关闭该按钮控件也属于相同的发送者与接收者。我们首先将控件对象 “pushButton_4” 从按钮控件 QPushButton 改变为 选项框控件 “QCheckBox”点击控件对象 “pushButton_4”控件对象的周围边界显示几个蓝色小方块点击鼠标右键唤出下拉菜单选择“变型为” -“QCheckBox”。此时设计界面窗口中的按钮控件变成了一个选项框。同时右侧 “对象查看器” 中的控件 “pushButton_4”也自动变更为 “checkBox_4”。变更的控件 “checkBox_4” 继承了原来控件 “pushButton_4” 的一些属性如位置、尺寸、显示内容。接下来设置信号/槽的连接1选择菜单项 “Edit” - 编辑信号/槽或者通过快捷键 F4 或在工具栏选择进入信号/槽编辑模式。2选中控件对象发送者此处为按钮控件 “checkBox_4”长按鼠标左键并移动当鼠标移出控件对象区域后出现一条带箭头的红线和一个红色的接地符号。 长按鼠标左键拖动鼠标再回到控件对象 “checkBox_4” 区域后松开鼠标左键就建立了发送者和接收者都是控件对象 “checkBox_4” 的信号/槽连接。此时控件对象 “checkBox_4” 变为浅红色带箭头的红线从 “checkBox_4” 出发又返回到 “checkBox_4” 结束。3同时弹出了对话框 “配置连接 - QtDesigner”对话框的左侧和右侧分别是控件对象 “checkBox_4” 的信号和槽函数。 从对话框左侧选中 “clicked(bool)”从对话框右侧选中 “setChecked(bool)”点击对话框下方的按钮 “OK”完成该信号/槽连接的配置。2.4 信号与槽的连接发送者是动作对象常见的信号发送者是图形窗口中的各种控件对象但也可以是动作对象。本例介绍对菜单栏和工具栏中控件对象建立信号与槽的连接。信号的发送者是动作对象时信号的接收者通常是顶层对象 “MainWindow”而槽函数可以是对象 “MainWindow” 的内置函数也可以是自定义函数。在上一篇文章中我们曾为菜单栏和工具栏中的动作 “actionQuit” 建立信号/槽连接就是发送者是动作对象、连接到对象 “MainWindow” 的内置函数的案例。其操作过程如下从在 QtDesigner 右侧下方窗口 “信号/槽编辑器”点击绿色的 “” 新建一个信号/槽连接点击 “发送者”从菜单中选择对象 “actionQuit”点击 “信号”从菜单中选择 “triggered()”点击 “接收者”从菜单中选择 “MainWindow”点击 “槽”从菜单中选择 “closed()”。以上操作的作用是发送者 对象 “actionQuit” 触发 “triggered()” 时接收者 对象MainWindow 执行槽函数 “closed()”。下面我们再为另一个动作 “actionHelp” 建立信号/槽连接连接的槽函数为自定义函数 trigger_actHelp()。其操作过程如下在 QtDesigner 将自定义函数 trigger_actHelp() 添加到槽函数配置连接表中从在 QtDesigner 右侧下方窗口 “信号/槽编辑器”点击绿色的 “” 新建一个信号/槽连接点击 “发送者”从菜单中选择对象 “actionHelp”点击 “信号”从菜单中选择 “triggered()”点击 “接收者”从菜单中选择 “MainWindow”点击 “槽”从菜单中选择 “trigger_actHelp()”。至此本章介绍了用 QtDesigner 进行几种常见的信号/槽连接的编辑和设置方法。如下图所示在 QtDesigner 中所添加的信号/槽连接都会在信号/槽编辑器窗口内显示。3. 图形界面的主程序上节在 QtDesigner 中完成了图形界面的设计将该文件另存为 uiDemo4.ui。打开 PyCharm选中文件 uiDemo4.ui使用 PyUIC 可以将其转换为 uiDemo4.py。接下来我们要编写图形界面的主程序调用图形界面设计文件 uiDemo4.py。3.1 从面向过程到面向对象面向过程的程序设计在上一篇文章中我们在主程序中创建主窗口后直接调用 UI 中的 Ui_MainWindow()。这是面向过程的程序设计方法。123456789# GUIdemo3.pyimportuiDemo3 # 导入图像界面设计文件if__name__ __main__: app QApplication(sys.argv) # 创建应用程序对象 MainWindow QMainWindow() # 创建主窗口 ui uiDemo3.Ui_MainWindow() ui.setupUi(MainWindow) MainWindow.show() # 显示主窗口 sys.exit(app.exec_()) # 在主线程中退出面向对象的程序设计随着项目的不断深入需要处理更加丰富的图形界面和实现更加复杂的软件功能程序的规模越来越大程序的结构越来越复杂。面向对象的程序设计使程序的结构更加清晰从而易于阅读、理解、开发和维护非常适合开发大规模、多任务的图形界面应用软件。PyQt5 中的类、对象、控件和方法都是面向对象的程序设计的概念。因此从本文开始我们采用面向对象的程序设计方法来编写图形界面的主程序。例程 GUIdemo4.py 如下12345678910fromuiDemo4 importUi_MainWindow # 导入 uiDemo4.py 中的 Ui_MainWindow 界面类classMyMainWindow(QMainWindow, Ui_MainWindow): # 继承 QMainWindow类和 Ui_MainWindow界面类 def__init__(self, parentNone): super(MyMainWindow, self).__init__(parent) # 初始化父类 self.setupUi(self) # 继承 Ui_MainWindow 界面类 if__name__ __main__: app QApplication(sys.argv) # 在 QApplication 方法中使用创建应用程序对象 myWin MyMainWindow() # 实例化 MyMainWindow 类创建主窗口 myWin.show() # 在桌面显示控件 myWin sys.exit(app.exec_()) # 结束进程退出程序在上面这个例程中我们创建了一个类 MyMainWindow()它继承了 QtWidgets.QMainWindow 类方法和导入的 uiDemo4.py 中的 Ui_MainWindow 界面类。super(MyMainWindow, self).init()初始化父类把 MyMainWindow 的对象 self 转成父类 QMainWindow 对象并调用 init 函数。self.setupUi(self)继承 uiDemo4.py 中的 Ui_MainWindow 界面类调用 Ui_MainWindow 类的setupUi() 方法。不熟悉面向对象程序设计的小白如果看不懂这段程序也没有关系保存下来照猫画虎就可以了。3.2 自定义槽函数运行例程 GUIdemo4.py。咦报错了AttributeError: ‘MyMainWindow object has no attribute ‘click_pushButton_2系统提示找不到 ‘click_pushButton_2这是因为在主程序中还没有编写 2.2 中自定义的槽函数。将自定义的槽函数 click_pushButton_2()、click_pushButton_3、trigger_actHelp(self) 添加到主程序中。下面给出例程 GUIdemo4.py 完整的代码。1234567891011121314151617181920212223242526272829303132# GUIdemo4.py# Demo4 of GUI by PyQt5# Copyright 2021 youcans, XUPT# Crated2021-10-10 importsysfromPyQt5.QtWidgets importQApplication, QMainWindow, QMessageBoxfromuiDemo4 importUi_MainWindow # 导入 uiDemo4.py 中的 Ui_MainWindow 界面类classMyMainWindow(QMainWindow, Ui_MainWindow): # 继承 QMainWindow类和 Ui_MainWindow界面类 def__init__(self, parentNone): super(MyMainWindow, self).__init__(parent) # 初始化父类 self.setupUi(self) # 继承 Ui_MainWindow 界面类 defclick_pushButton_2(self): # 点击 pushButton_2 触发 self.lineEdit_2.setText(click_pushButton_2) return defclick_pushButton_3(self): # 点击 pushButton_3 触发 fromdatetime importdatetime # 导入 datetime 库 nowDate datetime.now().strftime(%Y-%m-%d) # 获取当前日期 2021-10-10 nowTime datetime.now().strftime(%H:%M:%S) # 获取当前时间 16:58:00 self.lineEdit_1.setText(Current date: {}.format(nowDate)) # 显示日期 self.lineEdit_2.setText(Current time: {}.format(nowTime)) # 显示时间 self.lineEdit_3.setText(Demo4 of GUI by PyQt5) # return deftrigger_actHelp(self): # 动作 actHelp 触发 QMessageBox.about(self, About, 数字图像处理工具箱 v1.0\nCopyright YouCans, XUPT 2021) returnif__name__ __main__: app QApplication(sys.argv) # 在 QApplication 方法中使用创建应用程序对象 myWin MyMainWindow() # 实例化 MyMainWindow 类创建主窗口 myWin.show() # 在桌面显示控件 myWin sys.exit(app.exec_()) # 结束进程退出程序现在我们就得到了一个虽然简单但是很完整的面向对象的图形界面应用程序 GUIdemo4。检查一下应用程序 GUIdemo4 的各项功能点击 “1# 按钮”清空 “文本编辑行-1”点击 “2# 按钮”在 “文本编辑行-2” 显示“click_pushButton_2”点击 “3# 按钮”在 “文本编辑行-1” 显示当前日期在 “文本编辑行-2” 显示当前时间在 “文本编辑行-3” 显示 “Demo4 of GUI by PyQt5”点击 “4# 按钮” “4# 按钮” 的选项框被选中点击工具栏中的 “帮助”弹出上图中的信息提示框点击 “OK” 可以关闭信息框点击菜单栏或工具栏中的 “退出”关闭图形窗口应用程序。如果以上测试都成功了那么恭喜小白同学你已经掌握了用 QtDesigner 设计 PyQt5 图形界面的基本功能。在下一篇文章中我们将介绍 PyQt5 中的常用控件。
http://www.w-s-a.com/news/621115/

相关文章:

  • 同创企业网站建设拖拽建设网站源码
  • wordpress调用网站标题网站页面排版
  • 哈尔滨营销网站建设电子商城网站开发要多少钱
  • 免费织梦导航网站模板下载地址自己建站网站
  • 获取网站访客qq号码代码做抽奖网站违法吗
  • 湖南大型网站建设公司排名偷网站源码直接建站
  • 网站建设周期规划北京网站设计必看刻
  • 如何做自己的在线作品网站深圳网站设计公司的
  • 网站开发外包公司wordpress最简单模板
  • 湖南省建设人力资源网站wordpress主机pfthost
  • 淮安软件园哪家做网站各网站特点
  • 网站长尾关键词排名软件重庆荣昌网站建设
  • 建个商城网站多少钱茂名专业网站建设
  • 开通公司网站免费的网站app下载
  • 跨境电商网站模板wordpress壁纸
  • 国内做网站网站代理电子商务网站建设与维护概述
  • 如何做地方网站推广沈阳网势科技有限公司
  • 哈尔滨网站优化技术涵江网站建设
  • 做网站搞笑口号wordpress全屏动画
  • 怎么可以建网站小程序代理项目
  • 怎样做软件网站哪个网站用帝国cms做的
  • 网站开发编程的工作方法wordpress dux-plus
  • 廊坊电子商务网站建设公司网站进不去qq空间
  • 南宁网站推广费用创意网页设计素材模板
  • 深圳技术支持 骏域网站建设wordpress 酒主题
  • 东莞网站建设+旅游网站改版数据来源表改怎么做
  • 手机端做的优秀的网站设计企业做网站大概多少钱
  • 优化网站使用体验手机网站解析域名
  • 网站制作 商务做网站的软件名字全拼
  • 阿里巴巴网官方网站温州网站建设设计