我有一个qgridlayout
,在特定位置有多个自定义窗口小部件,如下例所示。举一个简单的例子,我正在使用qlabels
,但这将显示我要完成的工作。
[当用户单击顶部的按钮时,我希望带有单词“ Row 0,Column 0”的标签展开并代替其下方的标签(“ Row 1,Column0”)。同样不要删除下面的标签,而只是将其隐藏。最终结果应如下所示:
我一直在玩setRowStretch
和setColumnStretch
,但似乎没有什么改变。这是我迷路的地方,不确定要去哪里或缺少什么。我在照片中为示例添加了代码。感谢您的宝贵时间,我们将不胜感激任何帮助。
GUI CODE:example.py
from PyQt5 import QtCore, QtGui, QtWidgets class Ui_MainWindow(object): def setupUi(self, MainWindow): MainWindow.setObjectName("MainWindow") MainWindow.resize(191, 136) self.centralwidget = QtWidgets.QWidget(MainWindow) self.centralwidget.setObjectName("centralwidget") self.gridLayout = QtWidgets.QGridLayout(self.centralwidget) self.gridLayout.setObjectName("gridLayout") self.pushButton = QtWidgets.QPushButton(self.centralwidget) self.pushButton.setObjectName("pushButton") self.gridLayout.addWidget(self.pushButton, 0, 0, 1, 2) self.label_3 = QtWidgets.QLabel(self.centralwidget) self.label_3.setObjectName("label_3") self.gridLayout.addWidget(self.label_3, 3, 0, 1, 1) self.label_4 = QtWidgets.QLabel(self.centralwidget) self.label_4.setObjectName("label_4") self.gridLayout.addWidget(self.label_4, 2, 1, 1, 1) self.label_5 = QtWidgets.QLabel(self.centralwidget) self.label_5.setObjectName("label_5") self.gridLayout.addWidget(self.label_5, 3, 1, 1, 1) self.label_6 = QtWidgets.QLabel(self.centralwidget) self.label_6.setObjectName("label_6") self.gridLayout.addWidget(self.label_6, 1, 1, 1, 1) self.label = QtWidgets.QLabel(self.centralwidget) self.label.setObjectName("label") self.gridLayout.addWidget(self.label, 1, 0, 1, 1) self.label_2 = QtWidgets.QLabel(self.centralwidget) self.label_2.setObjectName("label_2") self.gridLayout.addWidget(self.label_2, 2, 0, 1, 1) MainWindow.setCentralWidget(self.centralwidget) self.statusbar = QtWidgets.QStatusBar(MainWindow) self.statusbar.setObjectName("statusbar") MainWindow.setStatusBar(self.statusbar) self.retranslateUi(MainWindow) QtCore.QMetaObject.connectSlotsByName(MainWindow) def retranslateUi(self, MainWindow): _translate = QtCore.QCoreApplication.translate MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow")) self.pushButton.setText(_translate("MainWindow", "Row Cover")) self.label_3.setText(_translate("MainWindow", "Row 2, Column 0")) self.label_4.setText(_translate("MainWindow", "Row 1, Column 1")) self.label_5.setText(_translate("MainWindow", "Row 2, Column 1")) self.label_6.setText(_translate("MainWindow", "Row 0, Column 1")) self.label.setText(_translate("MainWindow", "Row 0, Column 0")) self.label_2.setText(_translate("MainWindow", "Row 1 ,Column 0 "))
主要代码
import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
from example import Ui_MainWindow
class MainWindow(QMainWindow):
def __init__(self, parent=None):
super(MainWindow, self).__init__(parent)
QWidget.__init__(self, parent)
self.MainUi = Ui_MainWindow()
self.MainUi.setupUi(self)
self.MainUi.pushButton.clicked.connect(self.expand_row)
def expand_row(self):
self.MainUi.label_2.hide()
self.MainUi.gridLayout.setRowStretch(0,1)
if __name__ == "__main__":
app = QApplication(sys.argv)
MainWindow = MainWindow()
MainWindow.setWindowTitle('Example')
MainWindow.show()
sys.exit(app.exec_())
我有一个qgridlayout,在特定位置有多个自定义窗口小部件,如下例所示。举一个简单的例子,我正在使用qlabels,但这将显示我要完成的工作。当...