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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

Python Qt GUI设计:QTabWidget、QStackedWidget和QDockWidget容器控件类(提升篇—2)

發布時間:2023/11/27 生活经验 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python Qt GUI设计:QTabWidget、QStackedWidget和QDockWidget容器控件类(提升篇—2) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

1、QTabWidget容器控件類

2、QStackedWidget容器控件類

3、QDockWidget容器控件類


有時候我們可能會面臨這樣一種情況:所開發的程序包含了太多的控件,導致一個窗口裝載不下或者裝載的控件太多而不美觀。

本篇博文就來解決這個問題,即如何在現有的窗口空間中裝載更多的控件。

1、QTabWidget容器控件類

QTabWidget控件提供了一個選項卡和一個頁面區域,默認顯示第一個選項卡的頁面。通過單擊各選項卡可以查看對應的頁面。如果在一個窗口中顯示的輸入字段很多,則可以對這些字段進行拆分,分別放置在不同頁面的選項卡中。

QTabWidget類中的常用方法如下表所示:

QTabWidget類中的常用信號如下表所示:

通過示例,了解QTabWidget容器控件類的使用方法,效果如下所示:

示例中,一個表單的內容分為三組,每一組小控件都顯示在不同的選項卡中。頂層窗口是一個QTablWidget控件,將三個選項卡添加進去。

實現代碼如下所示:

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,"聯系方式")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,"個人詳細信息")self.tab2.setLayout(layout)def tab3UI(self):layout=QHBoxLayout()layout.addWidget(QLabel("科目"))layout.addWidget(QCheckBox("物理"))layout.addWidget(QCheckBox("高數"))self.setTabText(2,"教育程度")self.tab3.setLayout(layout)if __name__ == '__main__':app = QApplication(sys.argv)demo = TabDemo()demo.show()sys.exit(app.exec_())

2、QStackedWidget容器控件類

QStackedWidget是一個堆棧窗口控件,使用QStackedLayout布局,可以填充一些小控件,但同一時間只有一個小控件可以顯示。QStackedWidget控件與QTabWidget類似,可以有效地顯示窗口中的控件。

通過示例,了解QStackedWidget容器控件類的使用方法,效果如下所示:

示例中,在QStackedWidget對象中填充了三個子控件。每個子控件都可以有自己的布局,包含特定的表單元素。QStackedWidget控件不能在頁面之間切換,它與當前選中的QListWidget控件中的選項進行連接。將QListWidget的currentRowChanged信號與display()槽函數相關聯,從而改變堆疊控件的視圖。

實現代碼如下所示:

import sys
from PyQt5.QtCore import *
from PyQt5.QtGui 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(self)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_())

3、QDockWidget容器控件類

QDockWidget是一個可以停靠在QMainWindow內的窗口控件,它可以保持在浮動狀態或者在指定位置作為子窗口附加到主窗口中。QMainWindow類的主窗口對象保留有一個用于停靠窗口的區域,這個區域在控件的中央周圍,如下圖所示:

QDockWidget控件在主窗口內可以移動到新的區域。QDockWidget類中的常用方法如下表所示:

通過示例,了解QDockWidget容器控件類的使用方法,效果如下所示:

示例中,頂層窗口是一個QMainWindow對象,QTextEdit對象是它的中央小控件,創建可停靠的窗口items,然后,在停靠窗口items內添加QListWidget對象,最后,將停靠窗口放置在中央小控件的右側。

實現代碼如下所示:

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)layout = QHBoxLayout()bar=self.menuBar()file=bar.addMenu("File")file.addAction("New")file.addAction("save")file.addAction("quit")self.items = QDockWidget("Dockable", self)self.listWidget = QListWidget()self.listWidget.addItem("item1")self.listWidget.addItem("item2")self.listWidget.addItem("item3")self.items.setWidget(self.listWidget)self.items.setFloating(False)self.setCentralWidget(QTextEdit())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_())

總結

以上是生活随笔為你收集整理的Python Qt GUI设计:QTabWidget、QStackedWidget和QDockWidget容器控件类(提升篇—2)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。