pyqt同一个窗口 不同界面


一、

首先在designer中添加groupbox

在这里插入图片描述
此时会面临一个问题:一开始用的是QGroupBox,在designer中两个QGroupBox放在同一位置上,用setVisual来操控,但是发现只有其中的一个窗口可以正常显示,而且错误很多,后来查资料才发现,这样的操作会导致这两个QGroupBox属于父子的继承关系。

解决方案1

但是可以通过修改py文件来修改父子关系:
在这里插入图片描述
在这里插入图片描述

修改父窗口和相对位置即可。此时就不会出现一个显示一个不显示的问题了,因为不存在父子关系。

解决方案2

通过查阅资料 看到可以使用将QGroupBox换成Stacked Widget 或者 Tab Widget,非常好用,不同的界面放在不同的 “页” 上,调用的时候就直接显示对应的 page 就行。
还没尝试。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PyQt5是一个Python的GUI工具包,可以用来创建桌面应用程序。在PyQt5中,使用QStackedWidget类可以实现同窗口多层界面设计。 QStackedWidget是一个容器控件,它可以容纳一堆子widget,每个widget可以看作是一个页面。当需要切换页面时,只需要调整QStackedWidget中当前显示的widget即可。 以下是一个简单的示例代码,演示如何使用QStackedWidget实现同窗口多层界面设计: ```python import sys from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QHBoxLayout, QPushButton, QLabel, QStackedWidget class MainWindow(QWidget): def __init__(self): super().__init__() # 创建两个页面 self.page1 = QWidget() self.page2 = QWidget() # 在第一个页面中添加一个标签和一个按钮 label1 = QLabel("这是第一页") button1 = QPushButton("切换到第二页") button1.clicked.connect(self.switchToPage2) layout1 = QVBoxLayout(self.page1) layout1.addWidget(label1) layout1.addWidget(button1) # 在第二个页面中添加一个标签和一个按钮 label2 = QLabel("这是第二页") button2 = QPushButton("切换到第一页") button2.clicked.connect(self.switchToPage1) layout2 = QVBoxLayout(self.page2) layout2.addWidget(label2) layout2.addWidget(button2) # 创建一个QStackedWidget,把两个页面添加到其中 self.stackedWidget = QStackedWidget(self) self.stackedWidget.addWidget(self.page1) self.stackedWidget.addWidget(self.page2) # 创建一个水平布局,把QStackedWidget添加进去 layout = QHBoxLayout(self) layout.addWidget(self.stackedWidget) def switchToPage1(self): # 切换到第一页 self.stackedWidget.setCurrentWidget(self.page1) def switchToPage2(self): # 切换到第二页 self.stackedWidget.setCurrentWidget(self.page2) if __name__ == '__main__': app = QApplication(sys.argv) window = MainWindow() window.show() sys.exit(app.exec_()) ``` 这个示例代码中,我们创建了一个包含两个页面的窗口应用程序。每个页面都包含一个标签和一个按钮。当点击按钮时,通过QStackedWidget的setCurrentWidget方法切换到另一个页面。 运行这个程序,你会看到一个窗口,上面有一个标签和一个按钮。点击按钮,就可以切换到另一个页面。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值