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)       # 鼠标悬停信号自己可以试试效果。



目录
相关文章
|
6月前
【Qt 学习笔记】按钮实现helloworld | 信号与槽概述
【Qt 学习笔记】按钮实现helloworld | 信号与槽概述
82 0
Pyside6-第四篇-QCheckBox复选框
Pyside6-第四篇-QCheckBox复选框
637 0
Pyside6-第四篇-QCheckBox复选框
|
3月前
|
监控 C++ 容器
【qt】MDI多文档界面开发
【qt】MDI多文档界面开发
88 0
|
3月前
QML 界面切换的方法
QML 界面切换的方法
198 1
|
6月前
|
图形学 C++ 容器
QT信号与槽机制 和 常用控件介绍
QT信号与槽机制 和 常用控件介绍
QT信号与槽机制 和 常用控件介绍
|
5月前
Qt 信号槽(笔记)
Qt 信号槽(笔记)
Pyside6-第三篇-QToolButton一个的按钮
Pyside6-第三篇-QToolButton一个的按钮
266 0
Pyside6-第二篇-QPushButton一个普通按钮
Pyside6-第二篇-QPushButton一个普通按钮
266 0
Pyside6-第五篇-单选按钮QRadioButton
Pyside6-第五篇-单选按钮QRadioButton
493 0
从零开始学Pyqt5之【控件介绍】(12):QInputDialog对话框控件
从零开始学Pyqt5之【控件介绍】(12):QInputDialog对话框控件
从零开始学Pyqt5之【控件介绍】(12):QInputDialog对话框控件