我没有找到适合我问题的解决方案。所以这是我的问题:
我有一个QMainWindow,我需要两个QGroupboxes。通过我的菜单栏,我想选择可以看到的QGroupbox。 例如,当我在菜单栏中单击“ Groupbox 1”时,我想在QMainWindow中看到Groupbox1。
我以某种方式无法找到有关在QMainWindow上设置QGroupboxes的很好的解释。 有谁知道如何解决我的问题或所有QGroupbox方法的链接?
谢谢!
答案 0 :(得分:0)
您可以将组框添加到QStackedWidget
中,并在触发菜单操作时设置堆叠小部件的当前索引,例如
from PyQt5 import QtCore, QtWidgets
class MyGroupBox(QtWidgets.QGroupBox):
def __init__(self, label, bg_color, parent = None):
super().__init__(label, parent)
self.label = QtWidgets.QLabel(f'In {label}', self)
self.label.setAutoFillBackground(True)
self.label.setStyleSheet(f'background-color:{bg_color}; font-size:24px; qproperty-alignment: AlignCenter')
self.layout = QtWidgets.QHBoxLayout(self)
self.layout.addWidget(self.label)
class MyMainWindow(QtWidgets.QMainWindow):
def __init__(self):
super().__init__()
stacked_widget = QtWidgets.QStackedWidget()
self.groupbox1 = MyGroupBox('Group box 1', 'red')
self.groupbox2 = MyGroupBox('Group box 2', 'green')
stacked_widget.addWidget(self.groupbox1)
stacked_widget.addWidget(self.groupbox2)
self.setCentralWidget(stacked_widget)
view_menu = self.menuBar().addMenu('View')
view_box1_action = view_menu.addAction('Groupbox 1')
view_box2_action = view_menu.addAction('Groupbox 2')
view_box1_action.triggered.connect(lambda: stacked_widget.setCurrentIndex(0))
view_box2_action.triggered.connect(lambda: stacked_widget.setCurrentIndex(1))
self.resize(400,400)
if __name__ == '__main__':
app = QtWidgets.QApplication([])
main_window = MyMainWindow()
main_window.show()
app.exec()