gpt4 book ai didi

python - PyQt : How to set up a widget hidding an other widget if it's visible?

转载 作者:太空狗 更新时间:2023-10-30 02:22:40 28 4
gpt4 key购买 nike

假设我在界面 (ui) 中创建了两个 QObject。我想连接这两个小部件,让它们根据视觉状态相互控制。如果一个是隐藏的,另一个必须是可见的。反之亦然。

你能帮帮我吗? :)

谢谢!

妮可

最佳答案

可能的解决方案:子类小部件并覆盖 hideEventshowEvent:

#!/usr/bin/env python
import sys
from PyQt4 import QtCore, QtGui


class CustomWidget(QtGui.QLabel):
signal_hided = QtCore.pyqtSignal()
signal_shown = QtCore.pyqtSignal()
def hideEvent(self, event):
print 'hideEvent'
super(CustomWidget, self).hideEvent(event)
self.signal_hided.emit()

def showEvent(self, event):
print 'showEvent'
super(CustomWidget, self).showEvent(event)
self.signal_shown.emit()


class MainWidget(QtGui.QWidget):
def __init__(self, parent=None):
QtGui.QWidget.__init__(self, parent)
self.widget1 = CustomWidget('Widget1')
self.widget2 = CustomWidget('Widget2')

# connect signals, so if one widget is hidden then other is shown
self.widget1.signal_hided.connect(self.widget2.show)
self.widget2.signal_hided.connect(self.widget1.show)
self.widget2.signal_shown.connect(self.widget1.hide)
self.widget1.signal_shown.connect(self.widget2.hide)

# some test code
self.button = QtGui.QPushButton('test')
layout = QtGui.QVBoxLayout()
layout.addWidget(self.button)
layout.addWidget(self.widget1)
layout.addWidget(self.widget2)
self.setLayout(layout)
self.button.clicked.connect(self.do_test)

def do_test(self):
if self.widget1.isHidden():
self.widget1.show()
else:
self.widget2.show()


if __name__ == "__main__":
app = QtGui.QApplication(sys.argv)
widget = MainWidget()
widget.resize(640, 480)
widget.show()

sys.exit(app.exec_())

关于python - PyQt : How to set up a widget hidding an other widget if it's visible?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9314095/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com