日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

pyqt5讲解8:容器QTabWidget,QStackedWidget,QDockWidget

發(fā)布時(shí)間:2024/9/30 c/c++ 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 pyqt5讲解8:容器QTabWidget,QStackedWidget,QDockWidget 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

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ā)射該信號
import sys from PyQt5.QtCore import * from PyQt5.QtGui import * from PyQt5.QtWidgets import *class TabDemo(QTabWidget):def __init__(self, parent=None):super(TabDemo, self).__init__(parent) 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.tab1UI()self.tab2UI()self.tab3UI()self.setWindowTitle("Tab 例子")def tab1UI(self):layout = QFormLayout()layout.addRow("姓名",QLineEdit())layout.addRow("地址",QLineEdit())self.setTabText(0,"聯(lián)系方式")self.tab1.setLayout(layout)def tab2UI(self):layout = QFormLayout()sex = QHBoxLayout()sex.addWidget(QRadioButton("男")) sex.addWidget(QRadioButton("女"))layout.addRow(QLabel("性別"),sex)layout.addRow("生日",QLineEdit())self.setTabText(1,"個(gè)人詳細(xì)信息")self.tab2.setLayout(layout)def tab3UI(self):layout=QHBoxLayout()layout.addWidget(QLabel("科目"))layout.addWidget(QCheckBox("物理"))layout.addWidget(QCheckBox("高數(shù)"))self.setTabText(2,"教育程度")self.tab3.setLayout(layout)if __name__ == '__main__':app = QApplication(sys.argv)demo = TabDemo()demo.show()sys.exit(app.exec_())

在這個(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

常用方法

import sys from PyQt5.QtCore import * from PyQt5.QtGui import * from PyQt5.QtWidgets import *class DockDemo(QMainWindow):def __init__(self,parent=None):super(DockDemo, self).__init__(parent)#設(shè)置水平布局layout=QHBoxLayout()#實(shí)例化菜單欄bar=self.menuBar()#創(chuàng)建主菜單file,在其中添加子菜單file=bar.addMenu('File')file.addAction('New')file.addAction('Save')file.addAction('quit')#創(chuàng)建QDockWidget窗口(標(biāo)題,自身窗口)self.items=QDockWidget('Dockable',self)#實(shí)例化列表窗口,添加幾個(gè)條目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)#設(shè)置dock窗口是否可以浮動(dòng),True,運(yùn)行浮動(dòng)在外面,自動(dòng)與主界面脫離,False,默認(rèn)浮動(dòng)主窗口內(nèi),可以手動(dòng)脫離self.items.setFloating(False)#設(shè)置QTextEdit為中央小控件self.setCentralWidget(QTextEdit())#將窗口放置在中央小控件的右側(cè)self.addDockWidget(Qt.RightDockWidgetArea,self.items)self.setLayout(layout)self.setWindowTitle('Dock 例子') if __name__ == '__main__':app=QApplication(sys.argv)demo=DockDemo()demo.show()sys.exit(app.exec_())

可以拖動(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)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。