当前位置:   article > 正文

实战PyQt5: 032-按钮盒控件QDialogButtonBox_pyqt buttonbox

pyqt buttonbox

QDialogButtonBox简介

通常情况下,对话框和消息框都有一组标准布局的按钮,QDialogButtonBox部件以当前部件的布局风格提供一系列标准按钮,并自动根据用户的桌面环境使用适当的布局,QDialogButtonBox允许开发人员向其添加按钮,这些按钮都遵循一定的角色(其角色定义见QDialogButtonBox.ButtonRole 取值表)。

QDialogButtonBox.StandardButton标准按钮:

  • QDialogButtonBox.NoButton: 没按钮存在;
  • QDialogButtonBox.Ok: Ok;
  • QDialogButtonBox.Save: 保存;
  • QDialogButtonBox.SaveAll: 保存所有;
  • QDialogButtonBox.Open: 打开;
  • QDialogButtonBox.Yes: 确定;
  • QDialogButtonBox.YesToAll: 确定所有;
  • QDialogButtonBox.No: 否定;
  • QDialogButtonBox.NoToAll: 否定所有;
  • QDialogButtonBox.Abort: 终止;
  • QDialogButtonBox.Retry: 重试;
  • QDialogButtonBox.Ignore: 忽略;
  • QDialogButtonBox.Close: 关闭;
  • QDialogButtonBox.Cancel: 取消;
  • QDialogButtonBox.Discard: 放弃;
  • QDialogButtonBox.Help: 帮助;
  • QDialogButtonBox.Apply: 应用;
  • QDialogButtonBox.Reset: 重置;
  • QDialogButtonBox.RestoreDefaults: 重置到缺省状态。

QDialogButtonBox.ButtonRole 按钮角色:

  • QDialogButtonBox.InValidRole: 无效按钮;
  • QDialogButtonBox.AcceptRole: 点击该按钮,触发一个接受信息(如Ok按钮);
  • QDialogButtonBox.RejectRole: 点击该按钮,触发 一个拒绝信息(如Cancel按钮);
  • QDialogButtonBox.DestructiveRole: 点击该按钮触发一个破坏性的信息(如放弃修改)并关闭窗口;
  • QDialogButtonBox.ActionRole: 点击按钮将更改对话框中的元素(例如重置参数);
  • QDialogButtonBox.HelpRole: 点击按钮,请求帮助;
  • QDialogButtonBox.YesRole: 类似“Yes”的按钮;
  • QDialogButtonBox.NoRole: 类似“No”的按钮;
  • QDialogButtonBox.RestRole: 点击按钮,应用当前修改;
  • QDialogButtonBox.ApplyRole: 将对话框中的各种控件的值设置为默认值

ButtonRole与StandardButton标准按钮对应关系:

  • 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

QDialogButtonBox常用方法:

  • addButton(): 添加一个按钮;
  • removeButton(): 删除一个按钮;
  • setOrientation(): 设置按钮排列方式,水平或者垂直;
  • orientation(): 获得按钮的排列方式;
  • clear(): 清除所有按钮。

QDialogButtonBox常用信号:

  • accepted: 发射一个接受信息;
  • rejected: 发射一个拒绝信息;
  • clicked: 发射按钮点击信息 。

QDialogButtonBox类继承关系:

实战PyQt5: 032-按钮盒控件QDialogButtonBox

 

测试QDialogButtonBox

创建文件qdialogbuttonbox.py,演示添加两组标准按钮,和添加一组自定义按钮。完整代码如下:

  1. import sys
  2. from PyQt5 import QtCore, QtGui, QtWidgets
  3. from PyQt5.QtCore import Qt
  4. from PyQt5.QtWidgets import (QApplicationQWidgetQDialogButtonBox
  5.                              QMessageBoxQPushButtonQVBoxLayout)
  6.  
  7. class DemoDialogButtonBox(QWidget):
  8.     def __init__(selfparent=None):
  9.         super(DemoDialogButtonBoxself).__init__(parent)       
  10.         
  11.         # 设置窗口标题
  12.         self.setWindowTitle('实战PyQt5QDialogButtonBox Demo!')      
  13.         # 设置窗口大小
  14.         self.resize(400, 240)
  15.         
  16.         bbOkCancel = QDialogButtonBox(QDialogButtonBox.Ok|QDialogButtonBox.Cancelself
  17.         bbOkCancel.button(QDialogButtonBox.Ok).setDefault(True)
  18.         bbOkCancel.accepted.connect(self.onAccepted)
  19.         bbOkCancel.rejected.connect(self.onRejected)     
  20.         
  21.         bbARI = QDialogButtonBox(QDialogButtonBox.Abort|QDialogButtonBox.Retry|QDialogButtonBox.Ignoreself)
  22.         bbARI.accepted.connect(self.onAccepted)
  23.         bbARI.rejected.connect(self.onRejected)
  24.         
  25.         #添加按钮
  26.         bbVert = QDialogButtonBox(Qt.Verticalself
  27.         btnAdd = QPushButton('加法', self)
  28.         btnSub = QPushButton('减法', self)
  29.         btnMul = QPushButton('乘法', self)
  30.         btnDiv = QPushButton('除法', self)
  31.         
  32.         bbVert.addButton(btnAddQDialogButtonBox.AcceptRole)
  33.         bbVert.addButton(btnSubQDialogButtonBox.AcceptRole)
  34.         bbVert.addButton(btnMulQDialogButtonBox.AcceptRole)
  35.         bbVert.addButton(btnDivQDialogButtonBox.AcceptRole)
  36.         bbVert.accepted.connect(self.onAccepted)
  37.         bbVert.rejected.connect(self.onRejected)
  38.         
  39.         vLayout = QVBoxLayout(self)
  40.         vLayout.setSpacing(16)
  41.         vLayout.addStretch()
  42.         vLayout.addWidget(bbOkCancel)
  43.         vLayout.addWidget(bbARI)
  44.         vLayout.addWidget(bbVert)
  45.         vLayout.addStretch()
  46.        
  47.         self.setLayout(vLayout)
  48.         
  49.     def onAccepted(self):
  50.         QMessageBox.information(self, '信息',  'accepted!!!')
  51.         
  52.     def onRejected(self):
  53.         QMessageBox.information(self, '信息', 'rejected!!!')
  54.         
  55.         
  56.         
  57. if __name__ == '__main__':
  58.     app = QApplication(sys.argv)
  59.     window = DemoDialogButtonBox()
  60.     window.show()
  61.     sys.exit(app.exec())

运行结果如下图:

实战PyQt5: 032-按钮盒控件QDialogButtonBox

测试QDialogButtonBox

本文知识点

  • QDialogButtonBox标准按钮及按钮角色的指定;
  • 向QDialogButtonBox添加自定义按钮。

前一篇: 实战PyQt5:031-命令连接按钮控件QCommandLinkButton

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

闽ICP备14008679号