PyQt QStackedWidget小部件

 佚名文
发布时间:2025-10-18 15:53

PyQt QStackedWidget小部件

PyQt QStackedWidget小部件

QStackedWidget的功能类似于QTabWidget。它还有助于有效利用窗口的客户区。

QStackedWidget提供了一组小部件,一次只能查看其中一个小部件。它是建立在QStackedLayout之上的有用布局。

示例

一个父级QStackedWidget对象中填充了多个子部件。

self.Stack = QStackedWidget (self) self.stack1 = QWidget() self.stack2 = QWidget() self.stack3 = QWidget() self.Stack.addWidget (self.stack1) self.Stack.addWidget (self.stack2) self.Stack.addWidget (self.stack3)

每个子部件都可以有自己的表单元素布局。QStackedWidget本身不能在页面之间切换。它与QListWidget的当前选择的索引相关联。

self.leftlist = QListWidget () self.leftlist.insertItem (0, 'Contact' ) self.leftlist.insertItem (1, 'Personal' ) self.leftlist.insertItem (2, 'Educational' ) self.leftlist.currentRowChanged.connect(self.display)

这里,QListWidget 的 currentRowChanged() 信号被连接到 display() 函数,该函数会改变 stacked widget 的视图。

def display(self,i): self.Stack.setCurrentIndex(i)

完整的代码如下:

import sys from PyQt4.QtCore import * from PyQt4.QtGui import * class stackedExample(QWidget): def __init__(self): super(stackedExample, self).__init__() self.leftlist = QListWidget () self.leftlist.insertItem (0, 'Contact' ) self.leftlist.insertItem (1, 'Personal' ) self.leftlist.insertItem (2, 'Educational' ) self.stack1 = QWidget() self.stack2 = QWidget() self.stack3 = QWidget() self.stack1UI() self.stack2UI() self.stack3UI() self.Stack = QStackedWidget (self) self.Stack.addWidget (self.stack1) self.Stack.addWidget (self.stack2) self.Stack.addWidget (self.stack3) hbox = QHBoxLayout(self) hbox.addWidget(self.leftlist) hbox.addWidget(self.Stack) self.setLayout(hbox) self.leftlist.currentRowChanged.connect(self.display) self.setGeometry(300, 50, 10,10) self.setWindowTitle('StackedWidget demo') self.show() def stack1UI(self): layout = QFormLayout() layout.addRow("Name",QLineEdit()) layout.addRow("Address",QLineEdit()) #self.setTabText(0,"Contact Details") self.stack1.setLayout(layout) def stack2UI(self): layout = QFormLayout() sex = QHBoxLayout() sex.addWidget(QRadioButton("Male")) sex.addWidget(QRadioButton("Female")) layout.addRow(QLabel("Sex"),sex) layout.addRow("Date of Birth",QLineEdit()) self.stack2.setLayout(layout) def stack3UI(self): layout = QHBoxLayout() layout.addWidget(QLabel("subjects")) layout.addWidget(QCheckBox("Physics")) layout.addWidget(QCheckBox("Maths")) self.stack3.setLayout(layout) def display(self,i): self.Stack.setCurrentIndex(i) def main(): app = QApplication(sys.argv) ex = stackedExample() sys.exit(app.exec_()) if __name__ == '__main__': main()

以上代码产生以下输出−

上一篇 PyQt QTab小部件 下一篇 PyQt QSplitter小部件 Python教程

Python 教程

Tkinter 教程

Pandas 教程

NumPy 教程

Flask 教程

Django 教程

PySpark 教程

wxPython 教程

SymPy 教程

Seaborn 教程

SciPy 教程

RxPY 教程

Pycharm 教程

Pygame 教程

PyGTK 教程

PyQt 教程

PyQt5 教程

PyTorch 教程

Matplotlib 教程

Web2py 教程

BeautifulSoup 教程

Java教程

Java 教程

Web教程

HTML 教程

CSS 教程

CSS3 教程

jQuery 教程

Ajax 教程

AngularJS 教程

TypeScript 教程

WordPress 教程

Laravel 教程

Next.js 教程

PhantomJS 教程

Three.js 教程

Underscore.JS 教程

WebGL 教程

WebRTC 教程

VueJS 教程

数据库教程

SQL 教程

MySQL 教程

MongoDB 教程

PostgreSQL 教程

SQLite 教程

Redis 教程

MariaDB 教程

图形图像教程

Vulkan 教程

OpenCV 教程

大数据教程

R语言 教程

开发工具教程

Git 教程

VSCode 教程

Docker 教程

Gerrit 教程

Excel 教程

计算机教程

Go语言 教程

首页
评论
分享
Top