我正在使用QPushButton
加载UI。First -> Jumin -> Department -> next -> next
我想按顺序创建UI。问题是我无法将第三个部门加载到QMainwindow中。我不知道为什么
当您在QVBoxLayout
中创建一个小部件时,它会根据墙纸改变小部件的大小,如wxpython layout (wx.all)
。不能通过自动定心来改变position (move)
和size (resize)
?你知道吗
import sys
from PyQt5.QtWidgets import *
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.center_widget = QWidget()
self.setCentralWidget(self.center_widget)
self.FirstUI()
def FirstUI(self):
self.btn1 = QPushButton('test1', self)
self.btn1.move(50, 50)
self.btn1.clicked.connect(self.btn1_click)
def JuminUI(self):
self.ju1 = QLineEdit('13')
self.btn2 = QPushButton('^^^^^^^^^^')
self.ju_text = QLabel('asd')
self.jumim_layout = QVBoxLayout()
self.jumim_layout.addWidget(self.ju_text)
self.jumim_layout.addWidget(self.ju1)
self.jumim_layout.addWidget(self.btn2)
self.centralWidget().setLayout(self.jumim_layout)
self.btn2.clicked.connect(self.btn2_click)
def DepartmentUI(self):
self.depart_layout = QVBoxLayout()
self.depart_layout.addWidget(QPushButton('sdfsdf'))
self.centralWidget().setLayout(self.depart_layout)
def btn1_click(self):
self.btn1.deleteLater()
self.JuminUI()
def btn2_click(self):
self.ju1.deleteLater()
self.btn2.deleteLater()
self.ju_text.deleteLater()
self.DepartmentUI()
if __name__ == "__main__":
app = QApplication(sys.argv)
fream = MainWindow()
fream.show()
app.exec_()
创建和删除小部件几乎总是一个坏主意,你的代码也会陷入这些坏主意,最好是隐藏小部件,为此你应该使用
QStackedWidget
,而QStackedWidget
所做的只是通过更改currentIndex
使一个小部件在分配给你的所有小部件上可见。你知道吗相关问题 更多 >
编程相关推荐