pyqt5讲解8:容器QTabWidget,QStackedWidget,QDockWidget
QTabWidget
常用方法
| addTab() | 將一個(gè)控件添加到Tab控件的選項(xiàng)卡中 |
| insertTab() | 將一個(gè)Tab控件的選項(xiàng)卡插入到指定的位置 |
| removeTab() | 根據(jù)指定的索引刪除Tab控件 |
| setCurrentIndex() | 設(shè)置當(dāng)前可見的選項(xiàng)卡所在的索引 |
| setCurrentWidget() | 設(shè)置當(dāng)前可見的界面 |
| setTabBar() | 設(shè)置選項(xiàng)卡欄的小控件 |
| setTabPosition() | 設(shè)置選項(xiàng)卡的位置 |
| - | QTabWidget.North:顯示在頁面的上方 |
| - | QTabWidget.South:顯示在頁面的下方 |
| - | QTabWidget.West:顯示在頁面的左側(cè) |
| - | - QTabWidget.East:顯示在頁面的右側(cè) |
| setTabText() | 定義Tab選項(xiàng)卡的顯示值 |
常用信號
| currentChanged | 切換當(dāng)前頁面時(shí)發(fā)射該信號 |
在這個(gè)例子中,一個(gè)表單的內(nèi)容分為3組,每一組小控件都顯示在不同的選項(xiàng)卡中,頂層窗口是一個(gè)QTabWidget控件,將三個(gè)選項(xiàng)卡添加進(jìn)去
#創(chuàng)建3個(gè)選項(xiàng)卡小控件窗口self.tab1=QWidget()self.tab2=QWidget()self.tab3=QWidget()#將三個(gè)選項(xiàng)卡添加到頂層窗口中self.addTab(self.tab1, "Tab 1")self.addTab(self.tab2, "Tab 2")self.addTab(self.tab3, "Tab 3")使用表單布局管理器,每個(gè)選項(xiàng)卡顯示子表單的內(nèi)容
self.setTabText(0,'聯(lián)系方式') self.setTabText(QStackedWidget
QTackedWidget是一個(gè)堆棧窗口控件,可以填充一些小控件,但是同一時(shí)間只有一個(gè)小控件可以顯示,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__()#設(shè)置窗口初始位置和大小self.setGeometry(300,50,10,10)self.setWindowTitle('StackedWidget 例子')#創(chuàng)建列表窗口,添加條目self.leftlist=QListWidget()self.leftlist.insertItem(0,'聯(lián)系方式')self.leftlist.insertItem(1,'個(gè)人信息')self.leftlist.insertItem(2,'教育程度')#創(chuàng)建三個(gè)小控件self.stack1=QWidget()self.stack2=QWidget()self.stack3=QWidget()self.stack1UI()self.stack2UI()self.stack3UI()#在QStackedWidget對象中填充了三個(gè)子控件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('高數(shù)'))self.stack3.setLayout(layout)def display(self,i):#設(shè)置當(dāng)前可見的選項(xiàng)卡的索引self.stack.setCurrentIndex(i) if __name__ == '__main__':app=QApplication(sys.argv)demo=StackedExample()demo.show()sys.exit(app.exec_())在這個(gè)例子中,在QStackedWidget對象中填充了三個(gè)子控件
self.stack1=QWidget()self.stack2=QWidget()self.stack3=QWidget()#在QStackedWidget對象中填充了三個(gè)子控件self.stack=QStackedWidget(self)self.stack.addWidget(self.stack1)self.stack.addWidget(self.stack2)self.stack.addWidget(self.stack3)每個(gè)子控件都可以有自己的布局,包含特定的表單元素,QStackedWidget控件不能在頁面之間進(jìn)行切換,它與當(dāng)前選中的QListWidget控件中的選項(xiàng)進(jìn)行連接
#創(chuàng)建列表窗口,添加條目self.leftlist=QListWidget()self.leftlist.insertItem(0,'聯(lián)系方式')self.leftlist.insertItem(1,'個(gè)人信息')self.leftlist.insertItem(2,'教育程度')self.leftlist.currentRowChanged.connect(self.display)將QListWidget的currentRowChanged信號與display()槽函數(shù)相關(guān)聯(lián),從而改變堆疊控件的視圖
def display(self,i):#設(shè)置當(dāng)前可見的選項(xiàng)卡的索引self.stack.setCurrentIndex(i)QDockWidget
常用方法
可以拖動(dòng)
在這個(gè)例子中,頂層窗口是一個(gè)QMainWindow對象,QTextEdit對象是它的中央小控件
self.setCentralWidget(QTextEdit())首先創(chuàng)造可停靠的窗口Item
self.items=QDockWidget('Dockable',self)然后,在停靠窗口內(nèi)添加QListWidget對象
self.listWidget=QListWidget()self.listWidget.addItem('Item1')self.listWidget.addItem('Item2')self.listWidget.addItem('Item3')self.listWidget.addItem('Item4')#在窗口區(qū)域設(shè)置QWidget,添加列表控件self.items.setWidget(self.listWidget)最后,停靠窗口放置在中央小控件的右側(cè)
self.addDockWidget(Qt.RightDockWidgetArea,self.items)電氣專業(yè)的計(jì)算機(jī)萌新,寫博文不容易。如果你覺得本文對你有用,請點(diǎn)個(gè)贊支持下,謝謝。
總結(jié)
以上是生活随笔為你收集整理的pyqt5讲解8:容器QTabWidget,QStackedWidget,QDockWidget的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: UI设计包括室内设计吗
- 下一篇: s3c2440移植MQTT