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语言 教程