實現功能
程式碼實現
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QTabWidget, QVBoxLayout, QPushButton, QWidget, QLabel, \
QDesktopWidget
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.ini_ui()
def ini_ui(self):
self.setWindowTitle("多標籤頁面切換")
self.resize(800, 800)
# 視窗移動到中心
port = QDesktopWidget().availableGeometry().center() # 獲取螢幕中心點
x, y, w, h = self.frameGeometry().getRect() # 返回視窗座標點xy和寬和高wh
self.move(int(port.x() - w / 2), int(port.y() - h / 2))
# 建立tab物件
self.tab_widget = QTabWidget()
self.setCentralWidget(self.tab_widget) # 主要用於設定主視窗的中央部件
# 建立連個tab page頁面,並且新增到tab中
self.page1 = QWidget()
self.page2 = QWidget()
self.tab_widget.addTab(self.page1, "頁面1")
self.tab_widget.addTab(self.page2, "頁面2")
# 給每個page頁面新增布局、控制元件
layout1 = QVBoxLayout()
label1 = QLabel('頁面1顯示的內容')
btn1 = QPushButton('點我切換到頁面2')
btn1.clicked.connect(lambda: self.switch_page(1))
layout1.addWidget(label1)
layout1.addWidget(btn1)
self.page1.setLayout(layout1)
layout2 = QVBoxLayout()
label2 = QLabel('頁面2顯示的內容')
btn2 = QPushButton('點我切換到頁面1')
btn2.clicked.connect(lambda: self.switch_page(0))
layout2.addWidget(label2)
layout2.addWidget(btn2)
self.page2.setLayout(layout2)
def switch_page(self, index):
self.tab_widget.setCurrentIndex(index) # QTabWidget 中,setCurrentIndex用於設定當前選中的選項卡索引
if __name__ == "__main__":
app = QApplication(sys.argv)
mainWin = MainWindow()
mainWin.show()
sys.exit(app.exec())
學習地址:
Python鬥羅