Pyside6-第六篇-各按钮的信号与槽

简介: Pyside6-第六篇-各按钮的信号与槽

今天是Pyside6的第六篇内容。一起来看看各按钮的信号与槽。

from PySide6.QtCore import Qt
from PySide6.QtGui import QAction
from PySide6.QtWidgets import QApplication, QWidget, QRadioButton, \
    QPushButton, QCheckBox, QToolButton, QMenu
class Example(QWidget):
    def __init__(self):
        super(Example, self).__init__()
        self.initui()
        self.show()
    def initui(self):
        self.setGeometry(300, 300, 300, 200)
        self.setWindowTitle('信号与槽')
        self.QRadio_Yes = QRadioButton("是", self)
        self.QRadio_Yes.move(40, 20)
        self.QRadio_No = QRadioButton("否", self)
        self.QRadio_No.move(40, 40)
        self.QPush = QPushButton("按下", self)
        self.QPush_text = QPushButton("由此展示格信号触发效果", self)
        self.QPush.move(40, 60)
        self.QPush_text.move(150,150)
        self.QChek_PWD = QCheckBox("记住密码", self)
        self.QChek_Login = QCheckBox("自动登录", self)
        self.QChek_PWD.move(40, 90)
        self.QChek_Login.move(40, 120)
        self.QTool = QToolButton(self)
        self.QTool.setText("目录")
        self.QTool.move(40, 140)
        # 设置图标与文字并排显示
        self.QTool.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
        # 设置弹出模式
        self.QTool.setPopupMode(QToolButton.MenuButtonPopup)
        self.menu = QMenu(self)
        self.action1 = QAction('QING AN', self)
        self.action2 = QAction('V: qing_an_an', self)
        self.menu.addAction(self.action1)
        self.menu.addAction(self.action2)
        self.QTool.setMenu(self.menu)
if __name__ == '__main__':
    app = QApplication([])
    ex = Example()
    app.exec()

以上是UI的全部代码了。也是本章所有的大致内容,会围绕着这些展开了讲各个信号槽,其中我们使用一个QPushButton来显示一下部分效果。

正题开始;

QPushButton的信号与槽

常用三种信号:clicked、pressed、released,看看示例

from PySide6.QtCore import Qt
from PySide6.QtGui import QAction
from PySide6.QtWidgets import QApplication, QWidget, QPushButton
class Example(QWidget):
    def __init__(self):
        super(Example, self).__init__()
        self.initui()
        self.show()
    def initui(self):
        self.setGeometry(300, 300, 300, 200)
        self.setWindowTitle('信号与槽')
        self.QPush = QPushButton("按下", self)
        # self.QPush.clicked.connect(lambda: self.QPush_btn("我被出发了cliked信号"))  # 被点击
        # self.QPush.pressed.connect(lambda: self.QPush_btn("我被出发了pressed信号"))     # 被按下发出信号
        self.QPush.released.connect(lambda: self.QPush_btn("我被触发released信号"))     # 被释放发出信号
        self.QPush_text = QPushButton("由此展示格信号触发效果", self)
        self.QPush.move(40, 60)
        self.QPush_text.move(150, 150)
    def QPush_btn(self, txt):
        self.QPush_text.setText(txt)
if __name__ == '__main__':
    app = QApplication([])
    ex = Example()
    app.exec()

在使用pressed的时候,只要鼠标按下,就会触发,按下与释放使用频率先对点击还是比较的低的。


QRadioButton的信号与槽

关于QRadioButton,所使用的不多,记住toggled就好。其他的信号与他关系其实不大。当然你也可以通用clicked。

示例如下:

from PySide6.QtCore import Qt
from PySide6.QtGui import QAction
from PySide6.QtWidgets import QApplication, QWidget, QRadioButton
class Example(QWidget):
    def __init__(self):
        super(Example, self).__init__()
        self.initui()
        self.show()
    def initui(self):
        self.setGeometry(300, 300, 300, 200)
        self.setWindowTitle('信号与槽')
        self.QRadio_Yes = QRadioButton("是", self)
        # self.QRadio_Yes.toggled.connect(lambda: self.QPush_btn("我切换成了是"))
        self.QRadio_Yes.clicked.connect(lambda: self.QPush_btn("我点击了是"))
        self.QRadio_Yes.move(40, 20)
        self.QRadio_No = QRadioButton("否", self)
        # self.QRadio_No.toggled.connect(lambda: self.QPush_btn("我切换成了否"))
        self.QRadio_No.clicked.connect(lambda: self.QPush_btn("我点击了否"))
        self.QRadio_No.move(40, 40)
    def QPush_btn(self, txt):
        self.QPush_text.setText(txt)
if __name__ == '__main__':
    app = QApplication([])
    ex = Example()
    app.exec()

QCheckBox信号与槽

这个就先对容易了,常用的只需要记住一个即可,那就是toggled

from PySide6.QtCore import Qt
from PySide6.QtGui import QAction
from PySide6.QtWidgets import QApplication, QWidget, QRadioButton, \
    QPushButton, QCheckBox, QToolButton, QMenu
class Example(QWidget):
    def __init__(self):
        super(Example, self).__init__()
        self.initui()
        self.show()
    def initui(self):
        self.setGeometry(300, 300, 300, 200)
        self.setWindowTitle('信号与槽')
        self.QChek_PWD = QCheckBox("记住密码", self)
        self.QChek_Login = QCheckBox("自动登录", self)
        self.QChek_Login.toggled.connect(lambda: self.QPush_btn("我状态切换了"))
        self.QChek_PWD.move(40, 90)
        self.QChek_Login.move(40, 120)
    def QPush_btn(self, txt):
        self.QPush_text.setText(txt)
if __name__ == '__main__':
    app = QApplication([])
    ex = Example()
    app.exec()

QToolButton信号与槽

这个就不多举例了,QPushButton有的他都有。主要讲讲作为下拉框,我们如何知道选中了什么内容,所需要使用到的信号是triggered。

from PySide6.QtCore import Qt
from PySide6.QtGui import QAction
from PySide6.QtWidgets import QApplication, QWidget, QRadioButton, \
    QPushButton, QCheckBox, QToolButton, QMenu
class Example(QWidget):
    def __init__(self):
        super(Example, self).__init__()
        self.initui()
        self.show()
    def initui(self):
        self.setGeometry(300, 300, 300, 200)
        self.setWindowTitle('信号与槽')
        self.QTool = QToolButton(self)
        self.QTool.setText("目录")
        self.QTool.move(40, 140)
        # 设置图标与文字并排显示
        self.QTool.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
        # 设置弹出模式
        self.QTool.setPopupMode(QToolButton.MenuButtonPopup)
        self.menu = QMenu(self)
        self.action1 = QAction('QING AN', self)
        self.action2 = QAction('V: qing_an_an', self)
        self.menu.addAction(self.action1)
        self.menu.addAction(self.action2)
        self.QTool.setMenu(self.menu)
        self.menu.triggered.connect(self.QPush_btn)
    def QPush_btn(self, txt):
        self.QPush_text.setText(txt.text())
if __name__ == '__main__':
    app = QApplication([])
    ex = Example()
    app.exec()

比较特殊的是,命名连接的槽需要传递一个参数,我却没有传递,这是因为在源码中进行了这项操作了。

还有一个好玩的就是鼠标悬停信号了,hovered。顾名思义就是鼠标悬停在QMenu中的时候就会默认触发信号。 self.menu.hovered.connect(self.QPush_btn)       # 鼠标悬停信号自己可以试试效果。



目录
相关文章
Pyside6-第四篇-QCheckBox复选框
Pyside6-第四篇-QCheckBox复选框
1227 0
Pyside6-第四篇-QCheckBox复选框
|
容器
Pyside6-第十三篇-布局(最后一章废话-理论篇)
Pyside6-第十三篇-布局(最后一章废话-理论篇)
1084 0
Pyside6-第十篇-纯文本QPlainTextEdit
Pyside6-第十篇-纯文本QPlainTextEdit
868 0
Pyside6-第十篇-纯文本QPlainTextEdit
|
Python
Pyside6-第一篇-创建第一个窗口
Pyside6-第一篇-创建第一个窗口
655 0
Pyside6-第八篇-QLabel文本标签
Pyside6-第八篇-QLabel文本标签
738 0
Pyside6-第七篇-QLineEdit文本行编辑(内设案例)
Pyside6-第七篇-QLineEdit文本行编辑(内设案例)
1447 0
Pyside6-第二篇-QPushButton一个普通按钮
Pyside6-第二篇-QPushButton一个普通按钮
532 0
Pyside6-第三篇-QToolButton一个的按钮
Pyside6-第三篇-QToolButton一个的按钮
569 0
|
数据安全/隐私保护
Pyside6实操笔记(一):系统页面跳转
本文介绍了如何使用Pyside6实现系统页面跳转,包括登录界面跳转到注册界面的代码实现。关键步骤包括创建空窗口、编写跳转逻辑,并提供了完整的登录和注册窗口代码。此外,还涉及了国际化、主题色设置和窗口特效等高级功能。
496 0
|
XML JSON Ubuntu
Python实用记录(十五):PyQt/PySide6打包成exe,精简版(nuitka/pyinstaller/auto-py-to-exe)
本文介绍了使用Nuitka、PyInstaller和auto-py-to-exe三种工具将Python的PyQt/PySide6应用打包成exe文件的方法。提供了详细的安装步骤、打包命令和参数说明,适合新手学习和实践。
3782 0