赞
踩
dialogButtonBox按钮盒是Qt提供的可以快速地布置一组按钮的组件,Qt定义了一系列标准按钮,可以通过在Designer中简单勾选就可以在界面上部署一组按钮。
dialogButtonBox的对应类是QDialogButtonBox,该类是从QWidget类继承的,也是Buttons部件中唯一不从QAbstractButton继承的组件,因为dialogButtonBox是一组按钮的容器,本身并不是按钮。
名称 | 含义 |
---|---|
addButton | 在QDialogButtonBox添加按钮,可以是自定义按钮,也可以是标准按钮,可直接指明方向。 |
buttonRole | 标准按钮有其固定的role,而自定义按钮要设定buttonRole |
setOrientation | 按钮部署的方向想,水平或者垂直方向 |
setCenterButtons | QDialogButtonBox对象中的按钮居中对齐 |
setStandardButtons | 设置QDialogButtonBox对象中包含的标准按钮 |
按钮 | 信号 |
---|---|
Yes | 产生accepted信号 |
Yes to All | 产生accepted信号 |
OK | 产生accepted信号 |
Save | 产生accepted信号 |
Save All | 产生accepted信号 |
Open | 产生accepted信号 |
Retry | 产生accepted信号 |
Ignore | 产生accepted信号 |
Discard | 不产生accepted、rejected、helpRequested信号 |
No | 产生rejected信号 |
No to All | 产生rejected信号 |
Abort | 产生rejected信号 |
Close | 产生rejected信号 |
Cancel | 产生rejected信号 |
Apply、 Reset、 Restore Defaults | 不产生accepted、rejected、helpRequested信号 |
Help | 产生helpRequested信号 |
ButtonRole主要有如下三个作用:
ButtonRole | 标准按钮 |
---|---|
AcceptRole | Ignore、Ok、Open、Retry、Save、SaveAll、Apply |
DestructiveRole | Discard |
HelpRole | Help |
NoRole | No、NoToAll |
RejectRole | Cancel、Close、Abort |
ResetRole | Reset、RestoreDefaults |
YesRole | Yes、YesToAll |
import sys from PyQt5.QtCore import Qt from PyQt5.QtWidgets import (QApplication, QWidget, QDialogButtonBox, QMessageBox, QPushButton, QVBoxLayout) class DemoDialogButtonBox(QWidget): def __init__(self): super().__init__() self.setWindowTitle("QDialogButtonBox Demo!") self.resize(500, 240) bt1 = QPushButton("information") # 所需要的按钮,父窗口 dbb_ok_cancel = QDialogButtonBox(QDialogButtonBox.Ok | QDialogButtonBox.Cancel, self) # 在原标准按钮基础上增加pushbutton, 指定其buttonrole dbb_ok_cancel.addButton(bt1, QDialogButtonBox.AcceptRole) # 设置某个按钮的default状态 dbb_ok_cancel.button(QDialogButtonBox.Cancel).setDefault(True) # 在原标准按钮基础上使用addButton方法再增加标准按钮 dbb_ok_cancel.addButton(QDialogButtonBox.No) dbb_ok_cancel.accepted.connect(self.slot_accept) dbb_ok_cancel.rejected.connect(self.slot_reject) dbb_ari = QDialogButtonBox(QDialogButtonBox.Abort | QDialogButtonBox.Retry | QDialogButtonBox.Ignore, self) dbb_ari.accepted.connect(self.slot_accept) dbb_ari.rejected.connect(self.slot_reject) dbb_ari.setOrientation(Qt.Vertical) # 添加自定义按钮 btn_add = QPushButton('加法', self) btn_sub = QPushButton('减法', self) btn_mul = QPushButton('乘法', self) btn_div = QPushButton('除法', self) # 先定义空的QDialogButtonBox, 使用addButton方法,添加自定义按钮,指明方向 dbb_vert = QDialogButtonBox(Qt.Vertical, self) dbb_vert.addButton(btn_add, QDialogButtonBox.AcceptRole) dbb_vert.addButton(btn_sub, QDialogButtonBox.AcceptRole) dbb_vert.addButton(btn_mul, QDialogButtonBox.AcceptRole) dbb_vert.addButton(btn_div, QDialogButtonBox.AcceptRole) dbb_vert.accepted.connect(self.slot_accept) dbb_vert.rejected.connect(self.slot_reject) # 在布局中添加各个QDialogButtonBox对象 vbox = QVBoxLayout(self) # 设置各个widget之间的间隔 vbox.setSpacing(50) vbox.addWidget(dbb_ok_cancel) vbox.addWidget(dbb_ari) vbox.addWidget(dbb_vert) def slot_accept(self): QMessageBox.information(self, '信息', 'accepted!!!') def slot_reject(self): QMessageBox.information(self, '信息', 'rejected!!!') if __name__ == '__main__': app = QApplication(sys.argv) window = DemoDialogButtonBox() window.show() sys.exit(app.exec())
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。