Pyside2延迟加载选项卡内容
作者:YXN-python 阅读量:121 发布日期:2024-10-26
import sys
from PySide2.QtWidgets import QApplication, QMainWindow, QTabWidget, QWidget, QVBoxLayout, QLabel
class LazyLoadingTabWidget(QTabWidget):
def __init__(self, parent=None):
super().__init__(parent)
self.tabBarClicked.connect(self.load_tab_content)
# 创建标签页
self.first_tab = QWidget()
self.first_tab.setLayout(QVBoxLayout()) # 设置空的 QVBoxLayout
self.second_tab = QWidget()
self.second_tab.setLayout(QVBoxLayout()) # 设置空的 QVBoxLayout
self.addTab(self.first_tab, '选项 1')
self.addTab(self.second_tab, '选项 2')
# 设置标签的宽高
self.setStyleSheet("""
QTabBar::tab {
width: 100px;
height: 40px;
}
""")
# 加载标签页内容
def load_tab_content(self, index):
if index == 0:
self.parent().load_first_tab_content()
elif index == 1:
self.parent().load_second_tab_content()
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle('延迟加载标签示例')
self.setGeometry(100, 100, 800, 600)
self.tab_widget = LazyLoadingTabWidget(self)
self.setCentralWidget(self.tab_widget)
# 初始加载第一个标签页内容
self.load_first_tab_content()
def load_first_tab_content(self):
layout = self.tab_widget.first_tab.layout()
if layout.count() == 0:
print('这是第一个选项卡的内容')
label = QLabel("这是第一个选项卡的内容")
layout.addWidget(label)
def load_second_tab_content(self):
layout = self.tab_widget.second_tab.layout()
if layout.count() == 0:
print('这是第二个选项卡的内容,当用户点击选项卡时,才加载该选项卡的内容。')
label = QLabel("这是第二个选项卡的内容,当用户点击选项卡时,才加载该选项卡的内容。")
layout.addWidget(label)
if __name__ == "__main__":
app = QApplication(sys.argv)
main_win = MainWindow()
main_win.show()
sys.exit(app.exec_())
YXN-python
2024-10-26