class StatusBarOverlay(QWidget): def __init__(self, parent=None, statusbar=None): super(StatusBarOverlay, self).__init__(parent) self.statusbar = statusbar print(parent.__class__.__name__) layout = QVBoxLayout() line = QHBoxLayout() self.graphicsButton = QPushButton('Graphics') self.logButton = QPushButton('Log') self.toggleButton = QPushButton('Show') self.graphicsButton.setCheckable(True) self.logButton.setCheckable(True) self.toggleButton.setCheckable(True) self.buttonsBox = QButtonGroup() self.buttonsBox.addButton(self.graphicsButton) self.buttonsBox.addButton(self.logButton) # self.buttonsBox.addButton(self.toggleButton) line.addStretch() line.addWidget(self.graphicsButton) line.addWidget(self.logButton) line.addWidget(self.toggleButton) line.addStretch() line.setObjectName('ButtonsLayout') layout.addLayout(line) del line line = QHBoxLayout() layout.addLayout(line) self.setLayout(layout) self.toggleButton.clicked.connect(self.on_toggle) self.set_hidden() def set_hidden(self): self.toggleButton.setText('Show') for button in [self.graphicsButton, self.logButton]: button.setChecked(False) button.setDisabled(True) def set_visible(self): self.toggleButton.setText('Hide') self.graphicsButton.setChecked(True) self.graphicsButton.setDisabled(False) self.logButton.setDisabled(False) def on_toggle(self): if self.toggleButton.isChecked(): self.set_visible() self.resize(self.window().width(), self.window().height()) else: self.set_hidden()
class StatusBar(QStatusBar): def __init__(self, parent=None): super(StatusBar, self).__init__(parent) layout = self.layout() self.graphicsButton = QPushButton('Graphics') self.logButton = QPushButton('Log') self.toggleButton = QPushButton('Show') self.graphicsButton.setCheckable(True) self.logButton.setCheckable(True) self.toggleButton.setCheckable(True) self.buttonsBox = QButtonGroup() self.buttonsBox.addButton(self.graphicsButton) self.buttonsBox.addButton(self.logButton) layout.addStretch(1) layout.addWidget(self.graphicsButton) layout.addWidget(self.logButton) layout.addWidget(self.toggleButton) layout.addStretch(1) self.overlay = TranslucentWidget(parent, self) self.overlay.hide() self.toggleButton.clicked.connect(self.on_toggle) self.graphicsButton.clicked.connect(self.overlay.setLiveViewWidget) self.logButton.clicked.connect(self.overlay.setLogWidget) self.set_hidden() def set_hidden(self): self.toggleButton.setText('Show') for button in [self.graphicsButton, self.logButton]: button.setChecked(False) button.setDisabled(True) def set_visible(self): self.toggleButton.setText('Hide') self.graphicsButton.setChecked(True) self.graphicsButton.setDisabled(False) self.logButton.setDisabled(False) def on_toggle(self): if self.toggleButton.isChecked(): self.overlay.show() self.set_visible() self.resize(self.parent().width(), self.parent().height()) else: self.overlay.hide() self.set_hidden()