2024-04-20 08:01:54 发布
网友
我有五个工具按钮在一个QToolbar通过toolbar.addAction()和如果我选择其中一个,我想让其他看起来没有检查。你知道吗
QToolbar
toolbar.addAction()
示例:如果我选择“A”按钮,程序现在处于“A”模式,其他程序将无法工作。你知道吗
必须使用QActionGroup,还必须激活QAction的checkable属性:
import sys from PyQt5 import QtCore, QtGui, QtWidgets class ToolDemo(QtWidgets.QMainWindow): def __init__(self, parent=None): super(ToolDemo, self).__init__(parent) self.setWindowTitle("toolbar demo") toolbarBox = QtWidgets.QToolBar(self) toolbarBox.setFixedWidth(180) self.addToolBar(QtCore.Qt.RightToolBarArea, toolbarBox) vscode_action = QtWidgets.QAction("VSCode", self, checkable=True) ptt_action = QtWidgets.QAction("Ppt", self, checkable=True) word_action = QtWidgets.QAction("Word", self, checkable=True) excel_action = QtWidgets.QAction("Excel", self, checkable=True) other_action = QtWidgets.QAction("other", self, checkable=True) group = QtWidgets.QActionGroup(self, exclusive=True) for action in ( vscode_action, ptt_action, word_action, excel_action, other_action, ): toolbarBox.addAction(action) group.addAction(action) def main(): app = QtWidgets.QApplication(sys.argv) ex = ToolDemo() ex.show() sys.exit(app.exec_()) if __name__ == "__main__": main()
更新:
如果要在QToolBar中使用QCheckBox、QRadioButton、QPushButton和QToolButton等按钮,则必须使用QButtonGroup:
import sys from PyQt5 import QtCore, QtGui, QtWidgets class ToolDemo(QtWidgets.QMainWindow): def __init__(self, parent=None): super(ToolDemo, self).__init__(parent) self.setWindowTitle("toolbar demo") toolbarBox = QtWidgets.QToolBar(self) toolbarBox.setFixedWidth(180) self.addToolBar(QtCore.Qt.RightToolBarArea, toolbarBox) vscode_button = QtWidgets.QCheckBox(self, text="VSCode", checkable=True) ptt_button = QtWidgets.QCheckBox(self, text="Ppt", checkable=True) word_button = QtWidgets.QRadioButton(self, text="Word", checkable=True) excel_button = QtWidgets.QPushButton(self, text="Excel", checkable=True) other_button = QtWidgets.QToolButton(self, text="other", checkable=True) group = QtWidgets.QButtonGroup(self, exclusive=True) for button in ( vscode_button, ptt_button, word_button, excel_button, other_button, ): toolbarBox.addWidget(button) group.addButton(button) def main(): app = QtWidgets.QApplication(sys.argv) ex = ToolDemo() ex.show() sys.exit(app.exec_()) if __name__ == "__main__": main()
必须使用QActionGroup,还必须激活QAction的checkable属性:
更新:
如果要在QToolBar中使用QCheckBox、QRadioButton、QPushButton和QToolButton等按钮,则必须使用QButtonGroup:
相关问题 更多 >
编程相关推荐