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

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支持两种线程编程方式:使用threading模块和使用concurrent.futures模块。下面分别对这两种方式进行详细讲解: 使用threading模块 1. 创建线程 要创建线程,需要导入threading模块,并且创建Thread对象。下面是一个简单的示例,演示如何创建一个线程: import threading def worker(…

    python 2023年5月19日
    00
  • Python prettytable模块应用详解

    Python prettytable模块应用详解 prettytable是Python中一个用于创建漂亮的表格的模块,可以将数据以表格的形式展示出来,支持排序、格式化等功能。本文将详细介绍prettytable模块的使用方法,并提供示例代码。 安装 可以使用pip命令安装prettytable模块: pip install prettytable 基本用法 …

    python 2023年5月15日
    00
  • python迭代器常见用法实例分析

    Python迭代器常见用法实例分析 什么是迭代器? 在Python中,迭代器是支持迭代的对象,实现了__iter__和__next__方法。其中__iter__方法返回实例自身,__next__方法返回序列中的下一个元素。当迭代到序列末尾时,迭代器会引发StopIteration异常。 Python中内置了很多迭代器,如range、list、tuple、se…

    python 2023年5月14日
    00
  • Python lru_cache保存计算结果

    Python中的lru_cache装饰器是一种用于在计算结果中保存有限历史记录的技术。当函数被调用时,它会将参数和结果储存在内存中,并在后续调用时进行缓存,避免重复计算和提高程序响应速度。本文将详细介绍如何使用Python lru_cache装饰器。 什么是lru_cache lru_cache是Python标准库functools中的装饰器函数,它以LRU…

    python-answer 2023年3月25日
    00
  • Python datetime时间格式化去掉前导0

    针对“Python datetime时间格式化去掉前导0”的问题,我为您提供以下攻略: 1. 了解 datetime 模块 在使用 datetime 模块之前,需要先导入: import datetime datetime 模块是 Python 中用于处理日期和时间的模块,其中最重要的类是 datetime.datetime。使用这个类可以创建 dateti…

    python 2023年6月2日
    00
  • 三个Python自动化办公好用到爆的模块分享

    这里是“三个Python自动化办公好用到爆的模块分享”的详细攻略。 1. PyAutoGUI PyAutoGUI是一个Python模块,它可以用来控制鼠标和键盘,以及对屏幕进行截图、图像识别等操作。以下是使用示例: 安装PyAutoGUI 首先需要安装PyAutoGUI模块。在终端运行以下命令进行安装: pip install pyautogui 控制鼠标与…

    python 2023年5月19日
    00
  • python中and和or逻辑运算符的用法示例

    Python中的逻辑运算符有三种,分别为and(与)、or(或)和not(非)。本文将详细讲解Python中and和or逻辑运算符的用法示例。 and运算符 Python中的and运算符用于两个或多个表达式,只有在所有表达式都为True时,表达式才会输出True。以下为and运算符的示例: a = 10 b = 5 c = 7 if a > b and…

    python 2023年5月14日
    00
  • matplotlib 示例代码不适用于 python 虚拟环境

    【问题标题】:matplotlib example code not working on python virtual environmentmatplotlib 示例代码不适用于 python 虚拟环境 【发布时间】:2023-04-05 14:56:01 【问题描述】: 我正在尝试在 matplotlib 中显示图像的 x y z 坐标。 the ex…

    Python开发 2023年4月5日
    00
合作推广
合作推广
分享本页
返回顶部