一、選項(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è)置為動圖大小
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")
# 分別加載三個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)建一個主窗口
mainWin = DemoWin()
# 顯示
mainWin.show()
# 主循環(huán)
sys.exit(app.exec_())
實(shí)現(xiàn)效果:
![](/d/20211017/12c79afdf9aeddd0f159691226025c90.gif)
二、堆棧窗口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è)置為動圖大小
self.setFixedSize(600, 300)
self.list = QListWidget()
self.list.setMaximumWidth(100)
# 設(shè)置列表內(nèi)容(stack的索引)
self.list.insertItem(0, '個人信息')
self.list.insertItem(1, '動畫')
self.list.insertItem(2, '圖片')
# 創(chuàng)建三個stack頁面
self.stack1 = QWidget()
self.stack2 = QWidget()
self.stack3 = QWidget()
# 分別加載三個Stack的內(nèi)容
self.stack1UI()
self.stack2UI()
self.stack3UI()
# 將三個stack頁面加入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)
# 為List綁定事件,當(dāng)條目改變時,切換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時觸發(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)建一個主窗口
mainWin = DemoWin()
# 顯示
mainWin.show()
# 主循環(huán)
sys.exit(app.exec_())
實(shí)現(xiàn)效果:
![](/d/20211017/c53f561fe1bf1b64497650abed58726c.gif)
三、??靠丶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è)置為動圖大小
self.setFixedSize(600, 400)
# 創(chuàng)建一個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)建一個主窗口
mainWin = DemoWin()
# 顯示
mainWin.show()
# 主循環(huán)
sys.exit(app.exec_())
實(shí)現(xiàn)效果:
![](/d/20211017/627b05bcb429597a6c25b325cfd33e1c.gif)
四、容納多文檔窗口(多子窗口)
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è)置為動圖大小
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時,新建一個子窗口
if q.text() == "New":
# 為子窗口計(jì)數(shù)
DemoWin.count = DemoWin.count + 1
# 創(chuàng)建一個子窗口
sub = QMdiSubWindow()
# 為子窗口添加一個TextEdit控件
sub.setWidget(QTextEdit())
self.mdi.addSubWindow(sub)
sub.show()
elif q.text() == "Cascade": # 當(dāng)點(diǎn)擊菜單欄中的Cascade時,堆疊子窗口
self.mdi.cascadeSubWindows()
elif q.text() == "Tiled": # 當(dāng)點(diǎn)擊菜單欄中的Tiled時,平鋪?zhàn)哟翱?
self.mdi.tileSubWindows()
if __name__ == '__main__':
app = QApplication(sys.argv)
app.setWindowIcon(QIcon("images/icon.ico"))
# 創(chuàng)建一個主窗口
mainWin = DemoWin()
# 顯示
mainWin.show()
# 主循環(huán)
sys.exit(app.exec_())
實(shí)現(xiàn)效果:
![](/d/20211017/5474e8c8ee539894f1a212a2a9357504.gif)
到此這篇關(guān)于PyQT5實(shí)現(xiàn)選項(xiàng)卡窗口、堆棧窗口、??看翱?、子窗口的文章就介紹到這了,更多相關(guān)PyQT5 窗口 內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
您可能感興趣的文章:- Python 中PyQt5 點(diǎn)擊主窗口彈出另一個窗口的實(shí)現(xiàn)方法
- PyQt5筆記之彈出窗口大全
- PyQt5每天必學(xué)之關(guān)閉窗口
- PyQt5實(shí)現(xiàn)從主窗口打開子窗口的方法
- python3+PyQt5+Qt Designer實(shí)現(xiàn)堆疊窗口部件
- 對PyQt5基本窗口控件 QMainWindow的使用詳解
- pyqt5 實(shí)現(xiàn)多窗口跳轉(zhuǎn)的方法
- PYQT5開啟多個線程和窗口,多線程與多窗口的交互實(shí)例
- PyQt5 多窗口連接實(shí)例
- PyQt5固定窗口大小的方法