QTackedWidget是一个堆栈窗口控件,可以填充一些小控件,但是同一时间只有一个小控件可以显示,QStackedWidget使用QStackedLayout布局。QSTackedWidget控件与QTabWidget类似,可以有效的显示窗口的控件
import sys
from PyQt5.QtGui import *
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
class StackedExample(QWidget):
def __init__(self):
super(StackedExample, self).__init__()
self.setGeometry(300,50,10,10)
self.setWindowTitle('StackedWidget 例子')
self.leftlist=QListWidget()
self.leftlist.insertItem(0,'联系方式')
self.leftlist.insertItem(1,'个人信息')
self.leftlist.insertItem(2,'教育程度')
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()
HBox.addWidget(self.leftlist)
HBox.addWidget(self.stack)
self.setLayout(HBox)
self.leftlist.currentRowChanged.connect(self.display)
def stack1UI(self):
layout=QFormLayout()
layout.addRow('姓名',QLineEdit())
layout.addRow('地址',QLineEdit())
self.stack1.setLayout(layout)
def stack2UI(self):
layout = QFormLayout()
sex = QHBoxLayout()
sex.addWidget(QRadioButton('男'))
sex.addWidget(QRadioButton('女'))
layout.addRow(QLabel('性别'), sex)
layout.addRow('生日', QLineEdit())
self.stack2.setLayout(layout)
def stack3UI(self):
layout = QHBoxLayout()
layout.addWidget(QLabel('科目'))
layout.addWidget(QCheckBox('物理'))
layout.addWidget(QCheckBox('高数'))
self.stack3.setLayout(layout)
def display(self,i):
self.stack.setCurrentIndex(i)
if __name__ == '__main__':
app=QApplication(sys.argv)
demo=StackedExample()
demo.show()
sys.exit(app.exec_())
运行效果如图
在这个例子中,在QStackedWidget对象中填充了三个子控件
self.stack1=QWidget()
self.stack2=QWidget()
self.stack3=QWidget()
#在QStackedWidget对象中填充了三个子控件
self.stack=QStackedWidget(self)
self.stack.addWidget(self.stack1)
self.stack.addWidget(self.stack2)
self.stack.addWidget(self.stack3)
每个子控件都可以有自己的布局,包含特定的表单元素,QStackedWidget控件不能在页面之间进行切换,它与当前选中的QListWidget控件中的选项进行连接
self.leftlist=QListWidget()
self.leftlist.insertItem(0,'联系方式')
self.leftlist.insertItem(1,'个人信息')
self.leftlist.insertItem(2,'教育程度')
self.leftlist.currentRowChanged.connect(self.display)
将QListWidget的currentRowChanged信号与display()槽函数相关联,从而改变堆叠控件的视图
def display(self,i):
self.stack.setCurrentIndex(i)
相关文件及下载地址
https://download.csdn.net/download/jia666666/10609488
Q
Stack
ed
Widget
是一个在同一时间只能显示一个
widget
的
控件
,可以编写多个
widget
入栈,但是不会同一时间显示出来,需要切换显示。
这是引用网上大佬写的基础代码
import sys
from
PyQt5
.QtGui import *
from
PyQt5
.QtCore import *
from
PyQt5
.Qt
Widget
s import *
class
Stack
ed
Ex...
为了实现点击item,item删除,当QList
Widget
的item为空时,关闭窗口。
首先想到的是用removeItem
Widget
,但是结果并不像我预期那样的。如下效果:
removeItem
Widget
不会删除item,而是删除item的
widget
。从QList
Widget
中删除item的正确方法应该是takeItem(row),效果如下:
代码示例:
# -*- coding...
QDock
Widget
是一个可以停靠在QMainWindow内的窗口
控件
,它可以保持在浮动状态或者在指定位置作为子窗口附加到主窗口中,QMainWindow类的主窗口对象保留有一个用于停靠窗口的区域,这个区域在
控件
的中央周围
基于Python和
PyQt5
实现同一窗口下多
界面
切换
基于
pyqt5
控件
tab
Widget
结合按钮点击实现同窗口下
界面
切换。每个子
界面
均可拓展相应的功能。
# Form implementation generat
ed
from reading ui file 'MainUi.ui'
# Creat
ed
by:
PyQt5
UI code generator 5.13.0
# WARNING! Al
有时候我们可能会面临这样一种情况:所开发的程序包含了太多的
控件
,导致一个窗口装载不下或者装载的
控件
太多而不美观。本篇博文就来解决这个问题,即如何在现有的窗口空间中装载更多的
控件
。