gpt4 book ai didi

python - 更新 Qt 中的子部件

转载 作者:太空宇宙 更新时间:2023-11-03 17:16:24 25 4
gpt4 key购买 nike

我有一个包含以下类的简单项目

  1. 类MainWindow(QMainWindow)
  2. 主页类(QWidget)
  3. 类登录(QWidget)

我想要的只是能够嵌套 QWidget 类(使它们成为 QMainWindow 的子级)并在 MainWindow 内显示它们。在主窗口中调用 QWidgets 后,我无法弄清楚如何使它们“出现”。

代码如下:

import sys
from gui.MainWindow import Ui_MainWindow
from gui.home import Ui_Home
from gui.login import Ui_Login
from PyQt4.QtGui import QMainWindow, QApplication, QWidget

class Home(QWidget, Ui_Home):
def __init__(self):
QWidget.__init__(self)
self.setupUi(self)

class Login(QWidget, Ui_Login):
def __init__(self):
QWidget.__init__(self)
self.setupUi(self)

class MainWindow(QMainWindow,Ui_MainWindow):
def __init__(self):
QMainWindow.__init__(self)
self.setupUi(self)

#INSERT pushButton.click to go to HOME here
#INSERT pushButton.click to go to LOGIN here

def setHome(self):
self.label_Screen.setText("HOME")
self.mainwidget = Home()
#NEEDS SOMETHING HERE

def setLogin(self):
self.label_Screen.setText("LOGIN")
self.mainwidget = Login()
#NEEDS SOMETHING HERE

if __name__ == '__main__':
app = QApplication(sys.argv)
Main = MainWindow()
Main.show()
sys.exit(app.exec_())

我想我只需要一些我标记为“#NEEDS SOMETHING HERE”的东西,但我不确定是什么!

干杯!

已解决:感谢kh25

只需向 QMainWindow 添加布局并将 setHome 更改为:

def setHome(self):    
self.label_Screen.setText("HOME")
self.currentScreen = Home()
self.layout.addWidget(self.currentScreen)
self.setLayout(self.layout)

也应该对 setLogin 方法执行相同的操作。

最佳答案

您需要先创建一个布局并将小部件添加到该布局中。有多种类型的布局。阅读此处:

http://doc.qt.io/qt-4.8/layout.html

对于像您这样的简单情况,我建议使用 QHBoxLayout 或 QVBoxLayout。

声明此布局。在每个登录和主页小部件的布局上调用 addWidget(),然后在 QMainWindow 上调用 setLayout()。

关于python - 更新 Qt 中的子部件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33636902/

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