PyQT5實(shí)現(xiàn)選項(xiàng)卡窗口、堆棧窗口、??看翱凇⒆哟翱?/h1>
更新時(shí)間:2021年04月07日 10:39:46 作者:風(fēng)間悠香
這篇文章主要介紹了PyQT5實(shí)現(xiàn)選項(xiàng)卡窗口、堆棧窗口、停靠窗口、子窗口,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
一、選項(xiàng)卡控件QTabWidget
import sys
# 使用調(diào)色板等
from PyQt5.QtGui import QIcon
# 導(dǎo)入QT,其中包含一些常量,例如顏色等
# 導(dǎo)入常用組件
from PyQt5.QtWidgets import QApplication, QMainWindow, QWidget, QTabWidget
from PyQt5.QtWidgets import QFormLayout, QLineEdit,QLabel
from PyQt5.QtGui import QMovie,QPixmap
class DemoWin(QMainWindow):
def __init__(self):
super(DemoWin, self).__init__()
self.initUI()
def initUI(self):
# 將窗口設(shè)置為動(dòng)圖大小
self.setFixedSize(500, 300)
self.tab1 = QWidget()
self.tab2 = QWidget()
self.tab3 = QWidget()
self.tabwidget = QTabWidget(self)
self.tabwidget.resize(500, 300)
self.tabwidget.addTab(self.tab1, "選項(xiàng)卡1")
self.tabwidget.addTab(self.tab2, "選項(xiàng)卡2")
self.tabwidget.addTab(self.tab3, "選項(xiàng)卡3")
# 分別加載三個(gè)Tab的內(nèi)容
self.tab1UI()
self.tab2UI()
self.tab3UI()
# 添加窗口標(biāo)題
self.setWindowTitle("TabWidgetDemo")
def tab1UI(self):
layout = QFormLayout()
layout.addRow('姓名', QLineEdit())
layout.addRow('年齡', QLineEdit())
layout.addRow('住址', QLineEdit())
self.tab1.setLayout(layout)
def tab2UI(self):
label = QLabel("",self.tab2)
movie = QMovie("./images/timg.gif")
label.setMovie(movie)
movie.start()
def tab3UI(self):
label = QLabel("",self.tab3)
label.setPixmap(QPixmap("./images/ailusha.png"))
if __name__ == '__main__':
app = QApplication(sys.argv)
app.setWindowIcon(QIcon("images/icon.ico"))
# 創(chuàng)建一個(gè)主窗口
mainWin = DemoWin()
# 顯示
mainWin.show()
# 主循環(huán)
sys.exit(app.exec_())
實(shí)現(xiàn)效果:

二、堆棧窗口QStackedWidget
import sys
# 使用調(diào)色板等
from PyQt5.QtGui import QIcon
# 導(dǎo)入QT,其中包含一些常量,例如顏色等
# 導(dǎo)入常用組件
from PyQt5.QtWidgets import QApplication, QMainWindow, QWidget, QTabWidget, QListWidget
from PyQt5.QtWidgets import QFormLayout, QLineEdit, QLabel, QStackedWidget, QHBoxLayout
from PyQt5.QtGui import QMovie, QPixmap
class DemoWin(QWidget):
def __init__(self):
super(DemoWin, self).__init__()
self.initUI()
def initUI(self):
# 將窗口設(shè)置為動(dòng)圖大小
self.setFixedSize(600, 300)
self.list = QListWidget()
self.list.setMaximumWidth(100)
# 設(shè)置列表內(nèi)容(stack的索引)
self.list.insertItem(0, '個(gè)人信息')
self.list.insertItem(1, '動(dòng)畫(huà)')
self.list.insertItem(2, '圖片')
# 創(chuàng)建三個(gè)stack頁(yè)面
self.stack1 = QWidget()
self.stack2 = QWidget()
self.stack3 = QWidget()
# 分別加載三個(gè)Stack的內(nèi)容
self.stack1UI()
self.stack2UI()
self.stack3UI()
# 將三個(gè)stack頁(yè)面加入stackWidget
self.stackWidget = QStackedWidget()
self.stackWidget.addWidget(self.stack1)
self.stackWidget.addWidget(self.stack2)
self.stackWidget.addWidget(self.stack3)
hbox = QHBoxLayout()
hbox.addWidget(self.list)
hbox.addWidget(self.stackWidget)
self.setLayout(hbox)
# 為L(zhǎng)ist綁定事件,當(dāng)條目改變時(shí),切換stack(重要)
self.list.currentRowChanged.connect(self.stackSwitch)
# 添加窗口標(biāo)題
self.setWindowTitle("StackWidgetDemo")
def stack1UI(self):
layout = QFormLayout()
layout.addRow('姓名', QLineEdit())
layout.addRow('年齡', QLineEdit())
layout.addRow('住址', QLineEdit())
self.stack1.setLayout(layout)
def stack2UI(self):
label = QLabel("", self.stack2)
movie = QMovie("./images/timg.gif")
label.setMovie(movie)
movie.start()
def stack3UI(self):
label = QLabel("", self.stack3)
label.setPixmap(QPixmap("./images/ailusha.png"))
# 切換list時(shí)觸發(fā)槽函數(shù)切換Stack
def stackSwitch(self, index):
self.stackWidget.setCurrentIndex(index)
if __name__ == '__main__':
app = QApplication(sys.argv)
app.setWindowIcon(QIcon("images/icon.ico"))
# 創(chuàng)建一個(gè)主窗口
mainWin = DemoWin()
# 顯示
mainWin.show()
# 主循環(huán)
sys.exit(app.exec_())
實(shí)現(xiàn)效果:

三、??靠丶DockWidget
import sys
# 使用調(diào)色板等
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QIcon
# 導(dǎo)入QT,其中包含一些常量,例如顏色等
# 導(dǎo)入常用組件
from PyQt5.QtWidgets import QApplication, QMainWindow, QListWidget
from PyQt5.QtWidgets import QLineEdit, QDockWidget
class DemoWin(QMainWindow):
def __init__(self):
super(DemoWin, self).__init__()
self.initUI()
def initUI(self):
# 將窗口設(shè)置為動(dòng)圖大小
self.setFixedSize(600, 400)
# 創(chuàng)建一個(gè)DockWidget
self.items = QDockWidget()
# 定義一些內(nèi)容(放到DockWidget中)
self.listWidget = QListWidget()
self.listWidget.setFixedSize(150, 300)
self.listWidget.addItem('item1')
self.listWidget.addItem('item2')
self.listWidget.addItem('item3')
self.items.setWidget(self.listWidget)
# 將DockWidget加到主窗口中,默認(rèn)??吭谟疫?
self.addDockWidget(Qt.RightDockWidgetArea, self.items)
# 給主窗口添加一些控件
self.setCentralWidget(QLineEdit())
# 添加窗口標(biāo)題
self.setWindowTitle("DockWidgetDemo")
if __name__ == '__main__':
app = QApplication(sys.argv)
app.setWindowIcon(QIcon("images/icon.ico"))
# 創(chuàng)建一個(gè)主窗口
mainWin = DemoWin()
# 顯示
mainWin.show()
# 主循環(huán)
sys.exit(app.exec_())
實(shí)現(xiàn)效果:

四、容納多文檔窗口(多子窗口)
import sys
# 使用調(diào)色板等
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QIcon
# 導(dǎo)入QT,其中包含一些常量,例如顏色等
# 導(dǎo)入常用組件
from PyQt5.QtWidgets import QApplication, QMainWindow, QTextEdit
from PyQt5.QtWidgets import QMdiArea, QMdiSubWindow
class DemoWin(QMainWindow):
count = 0
def __init__(self):
super(DemoWin, self).__init__()
self.initUI()
def initUI(self):
# 將窗口設(shè)置為動(dòng)圖大小
self.setFixedSize(800, 500)
self.mdi = QMdiArea()
bar = self.menuBar()
file = bar.addMenu("SubWin")
file.addAction("New")
file.addAction("Cascade")
file.addAction("Tiled")
file.triggered.connect(self.windowAction)
self.setCentralWidget(self.mdi)
# 添加窗口標(biāo)題
self.setWindowTitle("SubWindowDemo")
def windowAction(self, q):
# 當(dāng)點(diǎn)擊菜單欄中的New時(shí),新建一個(gè)子窗口
if q.text() == "New":
# 為子窗口計(jì)數(shù)
DemoWin.count = DemoWin.count + 1
# 創(chuàng)建一個(gè)子窗口
sub = QMdiSubWindow()
# 為子窗口添加一個(gè)TextEdit控件
sub.setWidget(QTextEdit())
self.mdi.addSubWindow(sub)
sub.show()
elif q.text() == "Cascade": # 當(dāng)點(diǎn)擊菜單欄中的Cascade時(shí),堆疊子窗口
self.mdi.cascadeSubWindows()
elif q.text() == "Tiled": # 當(dāng)點(diǎn)擊菜單欄中的Tiled時(shí),平鋪?zhàn)哟翱?
self.mdi.tileSubWindows()
if __name__ == '__main__':
app = QApplication(sys.argv)
app.setWindowIcon(QIcon("images/icon.ico"))
# 創(chuàng)建一個(gè)主窗口
mainWin = DemoWin()
# 顯示
mainWin.show()
# 主循環(huán)
sys.exit(app.exec_())
實(shí)現(xiàn)效果:

到此這篇關(guān)于PyQT5實(shí)現(xiàn)選項(xiàng)卡窗口、堆棧窗口、停靠窗口、子窗口的文章就介紹到這了,更多相關(guān)PyQT5 窗口 內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
您可能感興趣的文章:
相關(guān)文章
-
Python動(dòng)態(tài)可視化模塊Pynimate初體驗(yàn)
Pynimate是python第三方用于動(dòng)態(tài)可視化的數(shù)據(jù)模塊,是一位專攻?Python?語(yǔ)言的程序員開(kāi)發(fā)的安裝包。本文將通過(guò)幾個(gè)簡(jiǎn)單的示例,講解一下Pynimate的使用方法,需要的可以參考一下 2023-02-02
-
Django中使用ModelForm生成HTML標(biāo)簽的方法步驟
在 Django 中,使用 ModelForm 來(lái)生成 HTML 表單標(biāo)簽是一種常見(jiàn)且高效的做法,本文主要介紹了Django中使用ModelForm生成HTML標(biāo)簽的方法步驟,感興趣的可以了解一下 2024-01-01
-
Python爬蟲(chóng)之獲取心知天氣API實(shí)時(shí)天氣數(shù)據(jù)并彈窗提醒
今天我們來(lái)學(xué)習(xí)如何獲取心知天氣API實(shí)時(shí)天氣數(shù)據(jù),制作彈窗提醒,并設(shè)置成自啟動(dòng)項(xiàng)目.文中有非常詳細(xì)的代碼示例及介紹,對(duì)正在學(xué)習(xí)python的小伙伴們有非常好的幫助,需要的朋友可以參考下 2021-05-05
-
Idea安裝python顯示無(wú)SDK問(wèn)題解決方案
這篇文章主要介紹了Idea安裝python顯示無(wú)SDK問(wèn)題解決方案,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下 2020-08-08
-
Python實(shí)戰(zhàn)基礎(chǔ)之Pandas統(tǒng)計(jì)某個(gè)數(shù)據(jù)列的空值個(gè)數(shù)
我們?cè)谔幚頂?shù)據(jù)的時(shí)候,經(jīng)常需要檢查數(shù)據(jù)的質(zhì)量,也需要知道出問(wèn)題的數(shù)據(jù)在哪個(gè)位置,下面這篇文章主要給大家介紹了關(guān)于Python實(shí)戰(zhàn)基礎(chǔ)之利用Pandas統(tǒng)計(jì)某個(gè)數(shù)據(jù)列空值個(gè)數(shù)的相關(guān)資料,需要的朋友可以參考下 2022-08-08
一、選項(xiàng)卡控件QTabWidget
import sys # 使用調(diào)色板等 from PyQt5.QtGui import QIcon # 導(dǎo)入QT,其中包含一些常量,例如顏色等 # 導(dǎo)入常用組件 from PyQt5.QtWidgets import QApplication, QMainWindow, QWidget, QTabWidget from PyQt5.QtWidgets import QFormLayout, QLineEdit,QLabel from PyQt5.QtGui import QMovie,QPixmap class DemoWin(QMainWindow): def __init__(self): super(DemoWin, self).__init__() self.initUI() def initUI(self): # 將窗口設(shè)置為動(dòng)圖大小 self.setFixedSize(500, 300) self.tab1 = QWidget() self.tab2 = QWidget() self.tab3 = QWidget() self.tabwidget = QTabWidget(self) self.tabwidget.resize(500, 300) self.tabwidget.addTab(self.tab1, "選項(xiàng)卡1") self.tabwidget.addTab(self.tab2, "選項(xiàng)卡2") self.tabwidget.addTab(self.tab3, "選項(xiàng)卡3") # 分別加載三個(gè)Tab的內(nèi)容 self.tab1UI() self.tab2UI() self.tab3UI() # 添加窗口標(biāo)題 self.setWindowTitle("TabWidgetDemo") def tab1UI(self): layout = QFormLayout() layout.addRow('姓名', QLineEdit()) layout.addRow('年齡', QLineEdit()) layout.addRow('住址', QLineEdit()) self.tab1.setLayout(layout) def tab2UI(self): label = QLabel("",self.tab2) movie = QMovie("./images/timg.gif") label.setMovie(movie) movie.start() def tab3UI(self): label = QLabel("",self.tab3) label.setPixmap(QPixmap("./images/ailusha.png")) if __name__ == '__main__': app = QApplication(sys.argv) app.setWindowIcon(QIcon("images/icon.ico")) # 創(chuàng)建一個(gè)主窗口 mainWin = DemoWin() # 顯示 mainWin.show() # 主循環(huán) sys.exit(app.exec_())
實(shí)現(xiàn)效果:
二、堆棧窗口QStackedWidget
import sys # 使用調(diào)色板等 from PyQt5.QtGui import QIcon # 導(dǎo)入QT,其中包含一些常量,例如顏色等 # 導(dǎo)入常用組件 from PyQt5.QtWidgets import QApplication, QMainWindow, QWidget, QTabWidget, QListWidget from PyQt5.QtWidgets import QFormLayout, QLineEdit, QLabel, QStackedWidget, QHBoxLayout from PyQt5.QtGui import QMovie, QPixmap class DemoWin(QWidget): def __init__(self): super(DemoWin, self).__init__() self.initUI() def initUI(self): # 將窗口設(shè)置為動(dòng)圖大小 self.setFixedSize(600, 300) self.list = QListWidget() self.list.setMaximumWidth(100) # 設(shè)置列表內(nèi)容(stack的索引) self.list.insertItem(0, '個(gè)人信息') self.list.insertItem(1, '動(dòng)畫(huà)') self.list.insertItem(2, '圖片') # 創(chuàng)建三個(gè)stack頁(yè)面 self.stack1 = QWidget() self.stack2 = QWidget() self.stack3 = QWidget() # 分別加載三個(gè)Stack的內(nèi)容 self.stack1UI() self.stack2UI() self.stack3UI() # 將三個(gè)stack頁(yè)面加入stackWidget self.stackWidget = QStackedWidget() self.stackWidget.addWidget(self.stack1) self.stackWidget.addWidget(self.stack2) self.stackWidget.addWidget(self.stack3) hbox = QHBoxLayout() hbox.addWidget(self.list) hbox.addWidget(self.stackWidget) self.setLayout(hbox) # 為L(zhǎng)ist綁定事件,當(dāng)條目改變時(shí),切換stack(重要) self.list.currentRowChanged.connect(self.stackSwitch) # 添加窗口標(biāo)題 self.setWindowTitle("StackWidgetDemo") def stack1UI(self): layout = QFormLayout() layout.addRow('姓名', QLineEdit()) layout.addRow('年齡', QLineEdit()) layout.addRow('住址', QLineEdit()) self.stack1.setLayout(layout) def stack2UI(self): label = QLabel("", self.stack2) movie = QMovie("./images/timg.gif") label.setMovie(movie) movie.start() def stack3UI(self): label = QLabel("", self.stack3) label.setPixmap(QPixmap("./images/ailusha.png")) # 切換list時(shí)觸發(fā)槽函數(shù)切換Stack def stackSwitch(self, index): self.stackWidget.setCurrentIndex(index) if __name__ == '__main__': app = QApplication(sys.argv) app.setWindowIcon(QIcon("images/icon.ico")) # 創(chuàng)建一個(gè)主窗口 mainWin = DemoWin() # 顯示 mainWin.show() # 主循環(huán) sys.exit(app.exec_())
實(shí)現(xiàn)效果:
三、??靠丶DockWidget
import sys # 使用調(diào)色板等 from PyQt5.QtCore import Qt from PyQt5.QtGui import QIcon # 導(dǎo)入QT,其中包含一些常量,例如顏色等 # 導(dǎo)入常用組件 from PyQt5.QtWidgets import QApplication, QMainWindow, QListWidget from PyQt5.QtWidgets import QLineEdit, QDockWidget class DemoWin(QMainWindow): def __init__(self): super(DemoWin, self).__init__() self.initUI() def initUI(self): # 將窗口設(shè)置為動(dòng)圖大小 self.setFixedSize(600, 400) # 創(chuàng)建一個(gè)DockWidget self.items = QDockWidget() # 定義一些內(nèi)容(放到DockWidget中) self.listWidget = QListWidget() self.listWidget.setFixedSize(150, 300) self.listWidget.addItem('item1') self.listWidget.addItem('item2') self.listWidget.addItem('item3') self.items.setWidget(self.listWidget) # 將DockWidget加到主窗口中,默認(rèn)??吭谟疫? self.addDockWidget(Qt.RightDockWidgetArea, self.items) # 給主窗口添加一些控件 self.setCentralWidget(QLineEdit()) # 添加窗口標(biāo)題 self.setWindowTitle("DockWidgetDemo") if __name__ == '__main__': app = QApplication(sys.argv) app.setWindowIcon(QIcon("images/icon.ico")) # 創(chuàng)建一個(gè)主窗口 mainWin = DemoWin() # 顯示 mainWin.show() # 主循環(huán) sys.exit(app.exec_())
實(shí)現(xiàn)效果:
四、容納多文檔窗口(多子窗口)
import sys # 使用調(diào)色板等 from PyQt5.QtCore import Qt from PyQt5.QtGui import QIcon # 導(dǎo)入QT,其中包含一些常量,例如顏色等 # 導(dǎo)入常用組件 from PyQt5.QtWidgets import QApplication, QMainWindow, QTextEdit from PyQt5.QtWidgets import QMdiArea, QMdiSubWindow class DemoWin(QMainWindow): count = 0 def __init__(self): super(DemoWin, self).__init__() self.initUI() def initUI(self): # 將窗口設(shè)置為動(dòng)圖大小 self.setFixedSize(800, 500) self.mdi = QMdiArea() bar = self.menuBar() file = bar.addMenu("SubWin") file.addAction("New") file.addAction("Cascade") file.addAction("Tiled") file.triggered.connect(self.windowAction) self.setCentralWidget(self.mdi) # 添加窗口標(biāo)題 self.setWindowTitle("SubWindowDemo") def windowAction(self, q): # 當(dāng)點(diǎn)擊菜單欄中的New時(shí),新建一個(gè)子窗口 if q.text() == "New": # 為子窗口計(jì)數(shù) DemoWin.count = DemoWin.count + 1 # 創(chuàng)建一個(gè)子窗口 sub = QMdiSubWindow() # 為子窗口添加一個(gè)TextEdit控件 sub.setWidget(QTextEdit()) self.mdi.addSubWindow(sub) sub.show() elif q.text() == "Cascade": # 當(dāng)點(diǎn)擊菜單欄中的Cascade時(shí),堆疊子窗口 self.mdi.cascadeSubWindows() elif q.text() == "Tiled": # 當(dāng)點(diǎn)擊菜單欄中的Tiled時(shí),平鋪?zhàn)哟翱? self.mdi.tileSubWindows() if __name__ == '__main__': app = QApplication(sys.argv) app.setWindowIcon(QIcon("images/icon.ico")) # 創(chuàng)建一個(gè)主窗口 mainWin = DemoWin() # 顯示 mainWin.show() # 主循環(huán) sys.exit(app.exec_())
實(shí)現(xiàn)效果:
到此這篇關(guān)于PyQT5實(shí)現(xiàn)選項(xiàng)卡窗口、堆棧窗口、停靠窗口、子窗口的文章就介紹到這了,更多相關(guān)PyQT5 窗口 內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python動(dòng)態(tài)可視化模塊Pynimate初體驗(yàn)
Pynimate是python第三方用于動(dòng)態(tài)可視化的數(shù)據(jù)模塊,是一位專攻?Python?語(yǔ)言的程序員開(kāi)發(fā)的安裝包。本文將通過(guò)幾個(gè)簡(jiǎn)單的示例,講解一下Pynimate的使用方法,需要的可以參考一下2023-02-02Django中使用ModelForm生成HTML標(biāo)簽的方法步驟
在 Django 中,使用 ModelForm 來(lái)生成 HTML 表單標(biāo)簽是一種常見(jiàn)且高效的做法,本文主要介紹了Django中使用ModelForm生成HTML標(biāo)簽的方法步驟,感興趣的可以了解一下2024-01-01Python爬蟲(chóng)之獲取心知天氣API實(shí)時(shí)天氣數(shù)據(jù)并彈窗提醒
今天我們來(lái)學(xué)習(xí)如何獲取心知天氣API實(shí)時(shí)天氣數(shù)據(jù),制作彈窗提醒,并設(shè)置成自啟動(dòng)項(xiàng)目.文中有非常詳細(xì)的代碼示例及介紹,對(duì)正在學(xué)習(xí)python的小伙伴們有非常好的幫助,需要的朋友可以參考下2021-05-05Idea安裝python顯示無(wú)SDK問(wèn)題解決方案
這篇文章主要介紹了Idea安裝python顯示無(wú)SDK問(wèn)題解決方案,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-08-08Python實(shí)戰(zhàn)基礎(chǔ)之Pandas統(tǒng)計(jì)某個(gè)數(shù)據(jù)列的空值個(gè)數(shù)
我們?cè)谔幚頂?shù)據(jù)的時(shí)候,經(jīng)常需要檢查數(shù)據(jù)的質(zhì)量,也需要知道出問(wèn)題的數(shù)據(jù)在哪個(gè)位置,下面這篇文章主要給大家介紹了關(guān)于Python實(shí)戰(zhàn)基礎(chǔ)之利用Pandas統(tǒng)計(jì)某個(gè)數(shù)據(jù)列空值個(gè)數(shù)的相關(guān)資料,需要的朋友可以參考下2022-08-08