【pyqt5學習】——containers相關控件(tab widget、scroll area、stack widget、tool box、MDI area、dock widget)

目錄

1、tab widget

2、scroll area

2.1 使用方法

Step1.拖入QScrollArea

?Step2.改變widget控件布局

?Step3.設置scrollAreaWidgetContents大小

?3、Tool Box

?4、Stacked Widget

4.1 案例展示

?5、frame

6、MDI AREA

?7、dock widget

7.1 懸浮狀態

?7.2 吸附狀態


containers是所有容器的統稱,主要是為了容納不同的對象類型,不同的container有不同的形式和特點。注:在同一個界面內的控件名不會出現重復,比如不同的tab頁的控件名稱也不會出現重復。但是在不同的彈出窗口的控件名稱則可以重復。

1、tab widget

該控件主要的作用是利用tab頁在同一個區域切換不同的界面,而不是將彈出新的窗口來顯示界面,可以理解為Word文檔上方的工具欄,點擊開始、編輯、布局會出現不同的內容

?

PyQt5系列教程(50):QTabWidget的使用 - 知乎icon-default.png?t=LA92https://zhuanlan.zhihu.com/p/37854878

?

2、scroll area

該控件可以容納不同的其他控件,當scroll area的大小小于contents的大小時,會出現滑條,這樣就可以通過滾動滑條來查看所有scroll area中的控件,同時這也是一種適應不同分辨率電腦的方法。有些時候,我們界面能展示的區域被限定的很小,但是需要展現的控件、內容卻很多,在限定大小的區域中無法全部顯示。這個時候就需要滾動條了。在Qt中有一個很好的類 QScrollArea

重點是要掌握如何使得滑條出現,這里需要設置父級窗口之間的布局,達到和最高級窗口自適應的效果,如何修改scroll area下的一個子控件scrollAreaWidgetContents的最小窗口大小,當窗口小于該值時,會出現滑條。具體看下面博主的案例

?

?

[Qt]如何用好QScrollArea_祥的專欄-CSDN博客_qt scrollarea怎么用icon-default.png?t=LA92http://blog.csdn.net/humanking7/article/details/78559692

2.1 使用方法

本文直接用 Qt Designer 去設計ui文件,當然也可以直接在代碼中寫。

Step1.拖入QScrollArea

在Widget box中找到QScrollArea控件,拖入窗體。


Step2.改變widget控件布局

?其目的,就是讓scrollArea隨著窗體變化而變化。


Step3.設置scrollAreaWidgetContents大小

現在的窗體即時縮小到最小的情況,也不會出現滾動條,如下圖所示。

?

這是因為我們沒有設置scrollAreaWidgetContents這個控件的最小值。

??? 正常情況下將scrollAreaWidgetContents中的內容展示完全大小,如geometry所示為[201 x 174]。
??? 將它的minimumSize設置為[200 x 170]。

這樣當界面的面積小于[200 x 170]時,界面就會出現滾動條。

?

?3、Tool Box

使用場景(類似于QQ中的好友分組):

這里主要是為了演示TOOL bOX控件的使用方法

1、tool box可以理解為一個抽屜組合,每一個按鈕為一個抽屜,點擊按鈕則會拉開抽屜,顯示出抽屜內部的內容

2、可以將不同的按鈕歸類到不同的tool box中,然后對按鈕進行信號與槽的綁定

3、這里演示了三組按鈕的歸類,分別為tool button、pushbutton、radio button

?

?4、Stacked Widget

?該控件和tab widget一樣,都是可以在同一個窗口內切換不同的界面,而不是新彈出窗口的方式來顯示新界面。但是和tab widget不一樣的是,tab widget控件自帶了tab按鍵,可以通過tab按鍵來定義每一個頁面的名稱。而stacked widget控件則不能為每一個頁面命名,但是在右上角有兩個箭頭,點擊箭頭可以切換到不同的頁面,該控件一般和控件list widget配合使用,這樣就可以通過點擊list widget中的選項來控制顯示不同的界面。當然需要注意的是要通過信號和槽來實現list widget和stacked widget進行聯動。

?

PyQt5高級界面控件之QStackedWidget(七)_jia666666的博客-CSDN博客_pyqt qstackedwidgeticon-default.png?t=LA92https://blog.csdn.net/jia666666/article/details/81669425

4.1 案例展示

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_())

?

?5、frame

QFrame是一個基類,可以直接使用;主要是用來控制一些邊框樣式,例如凸起、凹下、陰影、線寬等;繼承自QWidget

?具體可參考:

PyQt5之QFrame對象_李濟雄的博客-CSDN博客_pyqt5 qframeicon-default.png?t=LA92https://blog.csdn.net/weixin_43496130/article/details/104242882

6、MDI AREA

一種同時顯示多個窗口的方法是,創建多個獨立的窗口,這些獨立的窗口被稱為SDI(Single Document Interface 單文檔界面),每個窗口都有自己的菜單系統,工具欄等,這需要占用很多資源
MDI(Multiple Document Interface 多文檔界面)應用程序占用較少的內存資源,子窗口可以放在主窗口的容器中,這個容器控件被稱為QMidArea
QMidArea控件通常占據在QMainWindow對象的中央位置,子窗口在這個區域是QMdiSubWindow類的實例,可以設置任何QWidget作為子窗口對象的內部控件,子窗口在MDI區域進行級聯排列布局

?參考鏈接:

PyQt5高級界面控件之QMidArea(九)_jia666666的博客-CSDN博客_pyqt5 qmdiareaicon-default.png?t=LA92https://blog.csdn.net/jia666666/article/details/81670569

?

?7、dock widget

該控件是一個窗口,可以吸附在主窗口的四邊內,也可以懸浮在主窗口外。

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

7.1 懸浮狀態

?7.2 吸附狀態

?參考:

PyQt5高級界面控件之QDockWidget(八)_jia666666的博客-CSDN博客icon-default.png?t=LA92https://blog.csdn.net/jia666666/article/details/81669995

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/255677.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/255677.shtml
英文地址,請注明出處:http://en.pswp.cn/news/255677.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Java使用原子類進行多線程的 i++ 操作示例

2019獨角獸企業重金招聘Python工程師標準>>> 使用AtomicInteger原子類進行 i 操作 可以有類似 synchronized 實現同步的效果。 原子操作是不能分割的整體,沒有其他線程能夠中斷或檢查正在原子操作中的變量。一個原子類型就是一個原子操作可用的類型&…

深入理解面向對象設計的七大原則

一.面向對象設計的七大原則是什么? 1.開放封閉原則 2.里氏轉換原則 3.依賴倒轉原則 4.組合/聚合原則 5.接口隔離原則 6.“迪米特”法則 7.單一職責原則 二.七大原則是什么含義? 序號 面向對象設計七大原則 偶的理解 1 …

mybatis實戰教程(mybatis in action)之二:以接口的方式編程

前面一章,已經搭建好了eclipse,mybatis,mysql的環境,并且實現了一個簡單的查詢。請注意,這種方式是用SqlSession實例來直接執行已映射的SQL語句:session.selectOne("com.yihaomen.mybatis.models.UserMapper.selectUserByID&…

Linux內核分析06

進程的描述和進程的創建 一,進程的描述 進程控制塊PCB——task_struct (進程描述符),為了管理進程,內核必須對每個進程進行清晰的描述,進程描述符提供了內核所需了解的進程信息。 struct task_struct數據結…

【pyqt5學習】——pyqt5中.qrc資源文件的創建與編寫

目錄 一、說明 二、安裝pyqt5以及相關工具(pyqt5、pyuic、pqrcc) 三、創建.ui文件 1、選中文件右鍵-external-pyqt5 打開GUI設計界面 2、創建一個界面(內含四個等大label框) 3、CTRLS保存 4、找到ui文件,右鍵--e…

zabbix3.0.4通過jmx監控tomcat

jdk下載頁面http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.htmlhttp://download.oracle.com/otn-pub/java/jdk/8u91-b14/jdk-8u91-linux-x64.rpm?AuthParam1462948138_871b75d4b1dd7155e8cbe4f23e5cd2cd腳本[rootNFS-WEB1 latest]# vim /e…

C#學習筆記——25個經典問題

1.靜態成員和非靜態成員的區別? 2.const 和 static readonly 區別? 3.extern 是什么意思? 4.abstract 是什么意思? 5.internal 修飾符起什么作用? 6.sealed 修飾符是干什么的? 7.override 和 o…

PHP的學習--RSA加密解密

PHP服務端與客戶端交互或者提供開放API時,通常需要對敏感的數據進行加密,這時候rsa非對稱加密就能派上用處了。 舉個通俗易懂的例子,假設我們再登錄一個網站,發送賬號和密碼,請求被攔截了。 密碼沒加密,那攻…

Swift學習

1、Swift網址 http://swiftdoc.org/ 2、 https://github.com/ipader/SwiftGuide 轉載于:https://www.cnblogs.com/superbobo/p/5329876.html

【pyqt5學習】——最新版:配置external tools(designer、pyuic、pqrcc)

目錄 1、pip install PyQt5 2、pip install pyqt5-tools 3、file-settings-tools-external tool 點擊加號定義工具名字,名字隨意便于區分即可 雙擊每一個工具名字,配置路徑(注意每一個exe的路徑) designer.exe pyuic.exe py…

Linux中vi命令詳解

最近vi用的多,很多技巧不知道,備注一份, vi編輯器是所有Unix及Linux系統下標準的編輯器,它的強大不遜色于任何最新的文本編輯器,這里只是簡單地介紹一下它的用法和一小部分指令。由于 對Unix及Linux系統的任何版本&…

C# 屬性和字段

以下的文章是摘錄的,作者已經不詳了。之所以摘錄,是因為這個概念很重要特別對于VFP程序員來說,這里構造屬性就與vfp的方法完全不同。c#的屬性融合了vfp的addproperty() 和屬性的access method和assign method 。不一而足使用屬性&#xff0c…

SEO優化---學會建立高轉化率的網站關鍵詞庫

想要優化好一個網站,行業的分析,以及關鍵詞的挖掘是必要的,有一定的關鍵詞排名了,但是轉化率和流量方面卻很不理想這種情況大部分是只注重了有指數的關鍵詞排名,而忽略了長尾關鍵詞和一些沒有指數但是可以帶來巨大流量的關鍵詞。 網站大部分的…

Monkey腳本編寫

腳本優勢:簡單、快捷、不需要借助任何工具,可以做簡單的性能測試 腳本缺點:只能簡單實現坐標、按鍵等基本操作,無邏輯性 腳本格式: 腳本API: 例子: 打開瀏覽器,輸入WWW.jikexueyuan.…

C#通過DllImport引入dll中的C++非托管類

首先從msdn了解到,DllImport是用來 將特性化方法由非托管動態鏈接庫 (DLL) 作為靜態入口點公開。 從以上語句我們可以理解出三點:1.C編寫的非托管dll可以通過DllImport引入到C#中;2.引入到C#中的只能是C方法(或者說函數&#xff0…

USB 設備類協議入門【轉】

本文轉載自:http://www.cnblogs.com/xidongs/archive/2011/09/26/2191616.html 一、應用場合USB HID類是比較大的一個類,HID類設備屬于人機交互操作的設備。用于控制計算機操作的一些方面,如USB鼠標,USB鍵盤,USB游戲操…

lucene之Field屬性的解釋

Field類 數據類型 Tokenized是否分詞 Indexed 是否索引 Stored 是否存儲 說明 StringField(FieldName, FieldValue,Store.YES)) 字符串 N Y Y或N 這個Field用來構建一個字符串Field,但是不會進行分析,會將整個串存儲在索引中,比如…

【機器視覺】——焦距計算物體實際尺寸計算

目錄 1.基本概念 2.像素尺寸(piex)轉為實際尺寸(mm) 3.焦距計算

Tableview中Dynamic Prototypes動態表的使用

Tableview時IOS中應用非常廣泛的控件,當需要動態的添加多條不同的數據時,需要用動態表來實現,下面給出一個小例子,適用于不確定Section的數目,并且每個Section中的行數也不同的情況,適合新手。首先&#xf…

c# - 聲明事件

1 事件是屬于一個特定的類的,其本質是只能在此類中調用的委托。 從面向對象的角度出發,事件是對象對某個消息的響應,因此其聲明必然只能在類的級別出現,且不可用static修飾。 2 事件其實和屬性差不多,是一種特殊的方法…