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通过re正则表达式切割中英文的操作

    以下是“Python通过re正则表达式切割中英文的操作”的完整攻略: 一、问题描述 在Python中,我们可以使用正则表达式来切割中英文字符串。本文将详细讲解如何使用Python正则表达式切割中英文字符串,并提供两个示例说明。 二、解决方案 2.1 使用正则表达式切割中英文字符串 在Python中,我们可以使用正则表达式来切割中英文字符串。以下是一个示例,演…

    python 2023年5月14日
    00
  • Pandas读取并修改excel的示例代码

    下面是一份示例代码和相应的实现步骤,用于演示如何使用Pandas读取和修改Excel文件: 读取Excel文件 首先,我们需要导入Pandas库来读取Excel文件。具体代码如下: import pandas as pd # 读取Excel文件并存储为DataFrame对象 data = pd.read_excel(‘example.xlsx’) # 显示D…

    python 2023年5月13日
    00
  • Python字符串详细介绍

    Python字符串详细介绍 在Python中,字符串是一种常见的数据类型,它用于表示文本数据。在本文中,我们将详细介绍Python字符串的各种操作和方法。 创建字符串 在Python中,我们可以使用单引号、双引号或三引号来创建字符串。以下是一些示例: # 使用单引号创建字符串 string1 = ‘hello world’ # 使用双引号创建字符串 stri…

    python 2023年5月14日
    00
  • Python抛出引发异常(raise)知识点总结

    Python抛出引发异常(raise)知识点总结 在Python中,我们可以使用raise语句来抛出异常。raise语句用于引发异常,可以手动触发异常的抛出。本文将介绍Python中raise语句使用方法,包括如何抛出异常、如何自定义异常等。 抛出异常 在Python中,我们可以使用raise语句来抛出异常。raise语句可以接收一个异常类或异常实例作为参数…

    python 2023年5月14日
    00
  • python中列表添加元素的几种方式(+、append()、extend())

    以下是“Python中列表添加元素的几种方式(+、append()、extend())”的完整攻略。 1. 列表添加元素的几种方式 在Python中,可以使用多种方式向列表添加元素。下面介绍三种常用的方式:使用+运符、使用append()方法和使用extend()方法。 1.1 使用运算符 使用运算符可以将两个列表合并成一个新的列表。示例如下: list1 …

    python 2023年5月13日
    00
  • padas 生成excel 增加sheet表的实例

    下面来详细讲解如何使用Python中的Pandas库来创建Excel文件并增加Sheet表格的实例。 准备工作 首先,需要安装pandas库。可以使用pip命令在终端中安装: pip install pandas 完成安装后,就可以开始使用Pandas来生成Excel文件了。 创建Excel文件并增加Sheet表 以下是一个简单的Pandas示例代码,用于创…

    python 2023年5月13日
    00
  • python3 循环读取excel文件并写入json操作

    我来为您讲解一下“Python3循环读取Excel文件并写入JSON操作”的完整实例教程。 简介 在实际开发中,我们经常需要将Excel表格中的数据转换为JSON格式,以便于在Web开发中进行使用。本文就是介绍如何使用Python3语言循环读取Excel文件,并将其转换为JSON格式进行保存。 前置准备 在开始实现这个操作之前,我们需要先安装三个Python…

    python 2023年5月13日
    00
  • Python多线程中阻塞(join)与锁(Lock)使用误区解析

    这里是详细的“Python多线程中阻塞(join)与锁(Lock)使用误区解析”的攻略。 什么是多线程中的阻塞和锁 在Python的多线程编程中,阻塞是指等待其他线程完成任务后再继续执行。当一个线程等待另一个线程时,它会被阻塞。这时如果我们不加以处理,就会出现线程依赖、死锁等问题。 锁则是为了保证线程间的同步和互斥,防止多个线程同时访问某一个共享资源。当一个…

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