pyqt5讲解8:容器QTabWidget,QStackedWidget,QDockWidget
QTabWidget
常用方法
| addTab() | 將一個控件添加到Tab控件的選項卡中 |
| insertTab() | 將一個Tab控件的選項卡插入到指定的位置 |
| removeTab() | 根據指定的索引刪除Tab控件 |
| setCurrentIndex() | 設置當前可見的選項卡所在的索引 |
| setCurrentWidget() | 設置當前可見的界面 |
| setTabBar() | 設置選項卡欄的小控件 |
| setTabPosition() | 設置選項卡的位置 |
| - | QTabWidget.North:顯示在頁面的上方 |
| - | QTabWidget.South:顯示在頁面的下方 |
| - | QTabWidget.West:顯示在頁面的左側 |
| - | - QTabWidget.East:顯示在頁面的右側 |
| setTabText() | 定義Tab選項卡的顯示值 |
常用信號
| currentChanged | 切換當前頁面時發射該信號 |
在這個例子中,一個表單的內容分為3組,每一組小控件都顯示在不同的選項卡中,頂層窗口是一個QTabWidget控件,將三個選項卡添加進去
#創建3個選項卡小控件窗口self.tab1=QWidget()self.tab2=QWidget()self.tab3=QWidget()#將三個選項卡添加到頂層窗口中self.addTab(self.tab1, "Tab 1")self.addTab(self.tab2, "Tab 2")self.addTab(self.tab3, "Tab 3")使用表單布局管理器,每個選項卡顯示子表單的內容
self.setTabText(0,'聯系方式') self.setTabText(QStackedWidget
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()#在QStackedWidget對象中填充了三個子控件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):# zhu表單布局,次水平布局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)QDockWidget
常用方法
可以拖動
在這個例子中,頂層窗口是一個QMainWindow對象,QTextEdit對象是它的中央小控件
self.setCentralWidget(QTextEdit())首先創造可??康拇翱贗tem
self.items=QDockWidget('Dockable',self)然后,在??看翱趦忍砑観ListWidget對象
self.listWidget=QListWidget()self.listWidget.addItem('Item1')self.listWidget.addItem('Item2')self.listWidget.addItem('Item3')self.listWidget.addItem('Item4')#在窗口區域設置QWidget,添加列表控件self.items.setWidget(self.listWidget)最后,??看翱诜胖迷谥醒胄】丶挠覀?/p> self.addDockWidget(Qt.RightDockWidgetArea,self.items)
電氣專業的計算機萌新,寫博文不容易。如果你覺得本文對你有用,請點個贊支持下,謝謝。
總結
以上是生活随笔為你收集整理的pyqt5讲解8:容器QTabWidget,QStackedWidget,QDockWidget的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: UI设计包括室内设计吗
- 下一篇: 人口负增长是什么原因引起的