PYQT5--QListWidget+QStackedWidget实现左侧选项列表页面切换

754 阅读2分钟

QListWidget+QStackedWidget实现左侧选项列表页面切换

import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *

class _MainWindow(QWidget):
    def __init__(self):
        super(_MainWindow, self).__init__()
        self.resize(600, 400)
        self.setWindowTitle('RPC测试')
        self.initUi()

    def initUi(self):
        self.left_widget = QListWidget(self)  # 左侧选项列表
        # self.left_widget.move(100,400)

        self.left_widget.insertItem(0,"RPC自动化测试")
        self.left_widget.insertItem(1,"RPC接口压测")
        # self.left_widget.setLineWidth(500)
        self.stack1 = QWidget()
        # self.stack1.move(300,300)
        self.stack2 = QWidget()
        # self.stack3 = QWidget()
        self.stack1UI()
        self.stack2UI()
        # self.stack3UI()
        self.Stack = QStackedWidget(self)
        self.Stack.addWidget(self.stack1)
        self.Stack.addWidget(self.stack2)
        # self.Stack.addWidget(self.stack3)

        # 创建一个QSplitter,用来控制布局管理器大小
        splitter = QSplitter(Qt.Horizontal)
        splitter.addWidget(self.left_widget)  # 将左侧的布局 添加至QSplitter
        splitter.addWidget(self.Stack)  # 将右侧的布局 添加至QSplitter
        splitter.setSizes([100, 500])  # 设置左右布局占比

        # 创建一个布局管理器
        hbox = QHBoxLayout(self)
        hbox.addWidget(splitter)
        self.setLayout(hbox)
        self.left_widget.currentRowChanged.connect(self.display)

    def stack1UI(self):
        layout = QFormLayout()
        font = QFont()
        font.setPointSize(11)

        self.topLeft1 = QFrame()
        self.topLeft1.setMinimumSize(450, 350)

        self.Lable_modify = QLabel("点击“打开”修改配置文件,点击“执行”开始接口测试", self.topLeft1)
        self.Lable_modify.setGeometry(QRect(30, 20, 380, 30))
        self.Lable_modify.setFont(font)

        self.PushButton_modify = QPushButton("打开", self.topLeft1)
        self.PushButton_modify.setGeometry(QRect(60, 60, 50, 30))
        self.PushButton_modify.setFont(font)

        self.PushButton_Interface_run = QPushButton("执行", self.topLeft1)
        self.PushButton_Interface_run.setGeometry(QRect(240, 60, 50, 30))
        self.PushButton_Interface_run.setFont(font)

        self.textEdit_Interface = QTextEdit(self.topLeft1)
        self.textEdit_Interface.setGeometry(QRect(25, 100, 400, 260))

        scroll = QScrollArea()    # 滚动
        scroll.setWidget(self.topLeft1)
        # 设置窗体全局布局以及子布局的添加
        layout.addWidget(scroll)
        self.stack1.setLayout(layout)

    def stack2UI(self):
        layout = QFormLayout()
        font = QFont()
        font.setPointSize(11)

        self.topLeft2 = QFrame()
        self.topLeft2.setMinimumSize(450, 350)

        self.Lable_service = QLabel("service:", self.topLeft2)
        self.Lable_service.setGeometry(QRect(30, 20, 80, 30))
        self.Lable_service.setFont(font)

        self.LineEdit_service = QLineEdit(self.topLeft2)
        self.LineEdit_service.setGeometry(QRect(100, 20, 100, 30))

        self.Lable_method = QLabel("method:", self.topLeft2)
        self.Lable_method.setGeometry(QRect(250, 20, 80, 30))
        self.Lable_method.setFont(font)

        self.LineEdit_method = QLineEdit(self.topLeft2)
        self.LineEdit_method.setGeometry(QRect(320, 20, 100, 30))

        self.Lable_params = QLabel("params:", self.topLeft2)
        self.Lable_params.setGeometry(QRect(30, 60, 80, 30))
        self.Lable_params.setFont(font)

        self.LineEdit_params = QLineEdit(self.topLeft2)
        self.LineEdit_params.setGeometry(QRect(100, 60, 320, 30))

        self.Lable_res_params = QLabel("返回校验:", self.topLeft2)
        self.Lable_res_params.setGeometry(QRect(30, 100, 80, 30))
        self.Lable_res_params.setFont(font)

        self.LineEdit_res_params = QLineEdit(self.topLeft2)
        self.LineEdit_res_params.setGeometry(QRect(100, 100, 320, 30))

        self.Lable_time_interval = QLabel("循环间隔:", self.topLeft2)
        self.Lable_time_interval.setGeometry(QRect(30, 140, 80, 30))
        self.Lable_time_interval.setFont(font)

        self.LineEdit_time_interval = QLineEdit(self.topLeft2)
        self.LineEdit_time_interval.setText("3")
        self.LineEdit_time_interval.setGeometry(QRect(100, 140, 100, 30))

        self.Lable_times = QLabel("循环次数:", self.topLeft2)
        self.Lable_times.setGeometry(QRect(250, 140, 80, 30))
        self.Lable_times.setFont(font)

        self.LineEdit_times = QLineEdit(self.topLeft2)
        self.LineEdit_times.setText("1000")
        self.LineEdit_times.setGeometry(QRect(320, 140, 100, 30))

        self.PushButton_Pressure_run = QPushButton("执行", self.topLeft2)
        self.PushButton_Pressure_run.setGeometry(QRect(100, 180, 50, 30))
        self.PushButton_Pressure_run.setFont(font)

        self.PushButton_Pressure_stop = QPushButton("停止", self.topLeft2)
        self.PushButton_Pressure_stop.setGeometry(QRect(320, 180, 50, 30))
        self.PushButton_Pressure_stop.setFont(font)

        self.textEdit_Pressure = QTextEdit(self.topLeft2)
        self.textEdit_Pressure.setGeometry(QRect(25, 220, 400, 120))

        scroll = QScrollArea()  # 滚动
        scroll.setWidget(self.topLeft2)
        # 设置窗体全局布局以及子布局的添加
        layout.addWidget(scroll)
        self.stack2.setLayout(layout)

    def display(self, i):
        self.Stack.setCurrentIndex(i)


if __name__ == '__main__':
    app = QApplication(sys.argv)
    MyWindow = _MainWindow()
    MyWindow.show()
    sys.exit(app.exec_())