QToolbar
我在一个通孔中有五个工具按钮,toolbar.addAction()
如果我选择其中一个,我想让其他按钮看起来不被选中。
示例:如果我选择“A”按钮并且程序现在处于“A”模式,其他人无法工作。
您必须使用 QActionGroup,还必须激活 QAction 的可检查属性:
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()
更新:
如果你想使用 QCheckBox、QRadioButton、QPushButton 和 QToolButton 等按钮在 QToolBar 中是独占的,那么你必须使用 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()