• 堆叠窗口QStackedWidget


    经常将QStackedWidget和QListWidget或者QListView搭配使用

     1 import sys
     2 from PyQt5.QtWidgets import QApplication, QWidget, QStackedWidget, QLabel, QLineEdit, QDateEdit, 
     3     QComboBox, QTextEdit, QListWidget, QGridLayout, QHBoxLayout
     4 
     5 class Demo(QWidget):
     6     def __init__(self):
     7         super(Demo, self).__init__()
     8         self.stack1 = QWidget() #实例化一个窗口
     9         self.stack2 = QWidget()
    10         self.stack3 = QTextEdit()
    11 
    12         self.stack1_init()
    13         self.stack2_init()
    14 
    15         self.stacked_widget = QStackedWidget(self)  # 创建一个堆叠窗口【虚拟窗口】
    16         self.stacked_widget.addWidget(self.stack1)  #给堆叠窗口添加子窗口或子控件
    17         self.stacked_widget.addWidget(self.stack2)
    18         self.stacked_widget.addWidget(self.stack3)
    19         self.stacked_widget.currentChanged.connect(lambda: print(self.stacked_widget.currentIndex()))
    20         #堆叠窗口发生变化时,都会触发信号
    21         #self.stacked_widget.currentIndex()返回堆叠窗口序列号
    22 
    23         self.list_widget = QListWidget(self)  #创建列表控件--用来放标签项
    24         self.list_widget.addItem('Basic Info')   #在列表控件中添加标签项。参数:标签显示文本
    25         self.list_widget.addItem('Contact Info')
    26         self.list_widget.addItem('More Info')
    27         self.list_widget.clicked.connect(self.change_func) #单击列表控件时触发信号
    28 
    29         self.h_layout = QHBoxLayout()
    30         self.h_layout.addWidget(self.list_widget)
    31         self.h_layout.addWidget(self.stacked_widget)
    32 
    33         self.setLayout(self.h_layout)
    34 
    35     def stack1_init(self):
    36         name_label = QLabel('姓名:', self.stack1)
    37         gender_label = QLabel('性别:', self.stack1)
    38         bd_label = QLabel('出生日期:', self.stack1)
    39 
    40         name_line = QLineEdit(self.stack1)
    41         items = ['请选择性别', '', '']
    42         gender_combo = QComboBox(self.stack1)
    43         gender_combo.addItems(items)
    44         bd_dateedit = QDateEdit(self.stack1)
    45 
    46         g_layout = QGridLayout()
    47         g_layout.addWidget(name_label, 0, 0, 1, 1)
    48         g_layout.addWidget(name_line, 0, 1, 1, 1)
    49         g_layout.addWidget(gender_label, 2, 0, 1, 1)
    50         g_layout.addWidget(gender_combo, 2, 1, 1, 1)
    51         g_layout.addWidget(bd_label, 3, 0, 1, 1)
    52         g_layout.addWidget(bd_dateedit, 3, 1, 1, 1)
    53 
    54         self.stack1.setLayout(g_layout)
    55 
    56     def stack2_init(self):
    57         tel_label = QLabel('Tel:', self.stack2)
    58         mobile_label = QLabel('Mobile:', self.stack2)
    59         add_label = QLabel('Address:', self.stack2)
    60 
    61         tel_line = QLineEdit(self.stack2)
    62         mobile_line = QLineEdit(self.stack2)
    63         add_line = QLineEdit(self.stack2)
    64 
    65         g_layout = QGridLayout()
    66         g_layout.addWidget(tel_label, 0, 0, 1, 1)
    67         g_layout.addWidget(tel_line, 0, 1, 1, 1)
    68         g_layout.addWidget(mobile_label, 1, 0, 1, 1)
    69         g_layout.addWidget(mobile_line, 1, 1, 1, 1)
    70         g_layout.addWidget(add_label, 2, 0, 1, 1)
    71         g_layout.addWidget(add_line, 2, 1, 1, 1)
    72 
    73         self.stack2.setLayout(g_layout)
    74 
    75     def change_func(self):
    76         self.stacked_widget.setCurrentIndex(self.list_widget.currentIndex().row())
    77         #设置堆叠窗口显示指定索引的窗口
    78         #self.list_widget.currentIndex().row() 返回当前列表选中项的索引号
    79 
    80 if __name__ == '__main__':
    81     app = QApplication(sys.argv)
    82     demo = Demo()
    83     demo.show()
    84     sys.exit(app.exec_())

    样式:

  • 相关阅读:
    python--------------内置函数
    下载文件的一致性验证之MD5值校验
    MySQL最大连接数设置
    Jenkins构建次数设置
    Linux(CentOS7)安装zip、unzip命令
    如何在CentOS 7上安装Munin
    Intellij IDEA14 搜索框及控制台乱码解决
    IDEA测试结果查看
    IDEA运行TestNG报错rg.testng.TestNGException: org.xml.sax.SAXParseException;
    intellij idea 注释行如何自动缩进
  • 原文地址:https://www.cnblogs.com/liming19680104/p/10392469.html
Copyright © 2020-2023  润新知