python GUI库图形界面开发之PyQt5窗口布局控件QStackedWidget详细使用方法

yizhihongxing

Python GUI库图形界面开发之PyQt5窗口布局控件QStackedWidget详细使用方法

介绍

在PyQt5窗口布局控件中,QStackedWidget是很常用的一个控件,它主要是用来实现多个Widget在同一个窗口下的切换。

QStackedWidget的基本使用方法

步骤一:导入库

from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *

步骤二:创建QStackedWidget并添加Widget

self.stacked_widget = QStackedWidget(self)
self.page1 = QWidget()
self.page2 = QWidget()
self.stacked_widget.addWidget(self.page1)
self.stacked_widget.addWidget(self.page2)

步骤三:设置当前显示的Widget

self.stacked_widget.setCurrentWidget(self.page1)

步骤四:在按钮的槽函数中进行切换

def button_click(self):
    self.stacked_widget.setCurrentWidget(self.page2)

QStackedWidget的高级使用方法

设置特定Widget的名称

self.stacked_widget.addWidget(self.page1, "Page1")
self.stacked_widget.addWidget(self.page2, "Page2")

获取当前显示的Widget的名称

current_widget_name = self.stacked_widget.currentWidget().objectName()

设置动画效果

self.stacked_widget.setAnimation(QStackedWidget.Slide)

示例一:切换多个Widget

from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *

class MainWindow(QMainWindow):
    def __init__(self, parent=None):
        super(MainWindow, self).__init__(parent)
        self.setWindowTitle("MyApp")
        self.resize(250,150)

        self.button1 = QPushButton("Button1")
        self.button1.clicked.connect(self.on_button1_clicked)
        self.button2 = QPushButton("Button2")
        self.button2.clicked.connect(self.on_button2_clicked)

        self.stacked_widget = QStackedWidget(self)
        self.page1 = QWidget()
        self.page1.setObjectName("Page1")
        self.page1_label = QLabel("This is Page1", self.page1)
        self.page2 = QWidget()
        self.page2.setObjectName("Page2")
        self.page2_label = QLabel("This is Page2", self.page2)

        self.stacked_widget.addWidget(self.page1)
        self.stacked_widget.addWidget(self.page2)

        layout = QHBoxLayout()
        layout.addWidget(self.button1)
        layout.addWidget(self.button2)

        vbox = QVBoxLayout()
        vbox.addLayout(layout)
        vbox.addWidget(self.stacked_widget)

        central_widget = QWidget()
        central_widget.setLayout(vbox)
        self.setCentralWidget(central_widget)

    def on_button1_clicked(self):
        self.stacked_widget.setCurrentWidget(self.page1)

    def on_button2_clicked(self):
        self.stacked_widget.setCurrentWidget(self.page2)

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

示例二:结合TabWidget和StackedWidget使用

from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *

class MainWindow(QMainWindow):
    def __init__(self, parent=None):
        super(MainWindow, self).__init__(parent)
        self.setWindowTitle("MyApp")
        self.resize(250,150)

        self.tab_widget = QTabWidget(self)
        self.tab_widget.addTab(QWidget(), "Tab1")
        self.tab_widget.addTab(QWidget(), "Tab2")

        self.stacked_widget = QStackedWidget(self)
        self.page1 = QWidget()
        self.page1.setObjectName("Page1")
        self.page1_label = QLabel("This is Page1", self.page1)
        self.page2 = QWidget()
        self.page2.setObjectName("Page2")
        self.page2_label = QLabel("This is Page2", self.page2)

        self.stacked_widget.addWidget(self.page1)
        self.stacked_widget.addWidget(self.page2)

        self.tab_widget.currentChanged.connect(self.on_tab_changed)

        vbox = QVBoxLayout()
        vbox.addWidget(self.tab_widget)
        vbox.addWidget(self.stacked_widget)

        central_widget = QWidget()
        central_widget.setLayout(vbox)
        self.setCentralWidget(central_widget)

    def on_tab_changed(self, index):
        self.stacked_widget.setCurrentIndex(index)

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

以上就是关于PyQt5中窗口布局控件QStackedWidget的使用方法,包括基本使用方法和高级使用方法,以及多个示例的说明。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python GUI库图形界面开发之PyQt5窗口布局控件QStackedWidget详细使用方法 - Python技术站

(0)
上一篇 2023年6月13日
下一篇 2023年6月13日

相关文章

  • 从Python的源码来解析Python下的freeblock

    从Python的源码来解析Python下的freeblock,可以分成以下步骤: 了解freeblock的概念和作用 freeblock是指Python对象内存池中的一段空闲内存块,用于存储Python对象 在分配Python对象时,需要从内存池中分配freeblock,将其中的空闲内存分配给对象 freeblock的大小可以根据所需对象的大小进行动态调整,…

    python 2023年6月3日
    00
  • Django笔记二十三之case、when操作条件表达式搜索、更新等操作

    本文首发于公众号:Hunter后端原文链接:Django笔记二十三之条件表达式搜索、更新等操作 这一篇笔记将介绍条件表达式,就是如何在 model 的使用中根据不同的条件筛选数据返回。 这个操作类似于数据库中 if elif else 的逻辑。 以下是本篇笔记的目录: model 和数据准备 When 和 Case 操作新增字段返回 条件搜索 条件更新 条件…

    python 2023年4月17日
    00
  • 如何从python中的递归返回标志[重复]

    【问题标题】:How to return a flag from recursion in python [duplicate]如何从python中的递归返回标志[重复] 【发布时间】:2023-04-02 07:52:01 【问题描述】: 如果我满足代码中的 if 条件,我想将标志返回为 TRUE,但我无法做到。 class createnode: def…

    Python开发 2023年4月8日
    00
  • python3之模块psutil系统性能信息使用

    Python3之模块psutil系统性能信息使用 介绍 psutil是一个跨平台的Python库,可以实现系统进程和系统监控的信息获取。 安装 推荐使用pip进行安装,命令如下: pip install psutil 常用功能 查看CPU使用率 import psutil # 获取CPU使用率 percent = psutil.cpu_percent(int…

    python 2023年5月30日
    00
  • python计算分段函数值的方法

    要计算分段函数的值,可以通过 if 语句实现。首先需要定义该分段函数,然后通过输入 x (自变量)的值,判断 x 属于哪个区间,计算对应的函数值。 下面是一个例子,计算分段函数 y = f(x),其定义如下: 当 x < 0 时,f(x) = x当 x >=0 且 x <10 时,f(x) = x^2当 x >= 10 时,f(x) …

    python 2023年6月5日
    00
  • python使用super()出现错误解决办法

    Python使用super()出现错误解决办法 在Python中,super()函数用于调用父类的方法。但是,有时候会遇到使用super()出现错误的情况。本文介绍一些常见的使用super()出现的原因和解决方法。 原因1:未正确初始化父类 如果您未正确初始化类,将会导致使用super()出现错误。决方法是在子类的构造函数中调用父类的构造函数。以下是调用父类…

    python 2023年5月13日
    00
  • 人生苦短我用python python如何快速入门?

    这里是关于“人生苦短我用python——python如何快速入门”的攻略。 为什么选择Python Python是一门高级编程语言,能够与C, C++, Java等编程语言一起称为“三大主流编程语言”。与其他编程语言相比,Python拥有如下优点: 语法简洁,易于上手 开发效率高,大幅提升开发效率 库丰富,有大量的第三方库可以使用 跨平台,在不同的操作系统上…

    python 2023年5月14日
    00
  • Python中字符串String的基本内置函数与过滤字符模块函数的基本用法

    让我们来详细讲解一下Python中字符串String的基本内置函数与过滤字符模块函数的基本用法。 内置函数 Python中字符串的内置函数非常丰富,常用的有以下几类: 1. 查找字符串 find(sub[, start[, end]]): 查找字符串sub在字符串中第一次出现的位置,返回下标(如果没有找到,返回-1)。可以指定开始查找和结束查找的下标。 in…

    python 2023年5月20日
    00
合作推广
合作推广
分享本页
返回顶部