【PyQT-4】QListWidget列表控件、QComboBox下拉列表控件、QTableWidget表格控件

1 列表控件

python 复制代码
from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QRadioButton, \
    QFormLayout, QLineEdit, QTextEdit, QHBoxLayout, QVBoxLayout, QCheckBox, QListWidget
import sys


class MyWindow(QWidget):  # QWidget, QDialog容器类
    def __init__(self):
        super().__init__()

        # 设置窗口大小
        self.resize(400, 200)
        # 设置标题
        self.setWindowTitle('这是一个PyQT窗口')

        layout = QFormLayout()  # 表单
        list_widget = QListWidget()  # 列表布局
        list_widget.addItem('Python')
        list_widget.addItem('Java')
        list_widget.addItems(["C Plus Plus", "GoLang", "C"])

        list_widget.currentItemChanged.connect(self.list_selected)

        label = QLabel('请选择:')
        layout.addRow(label, list_widget)

        # 把布局放入当前窗体
        self.setLayout(layout)

    def list_selected(self, item):
        print(f'你选择的是:{item.text()}')


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

2 下拉列表控件

python 复制代码
from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QRadioButton, \
    QFormLayout, QLineEdit, QTextEdit, QHBoxLayout, QVBoxLayout, QCheckBox, QListWidget, QComboBox
import sys


class MyWindow(QWidget):  # QWidget, QDialog容器类
    def __init__(self):
        super().__init__()

        # 设置窗口大小
        self.resize(400, 200)
        # 设置标题
        self.setWindowTitle('这是一个PyQT窗口')

        layout = QFormLayout()  # 表单
        combox_list = QComboBox() # 下拉列表控件
        combox_list.addItem('Python')
        combox_list.addItem('Java')
        combox_list.addItems(["C Plus Plus", "GoLang", "C"])

        label = QLabel('请选择:')
        layout.addRow(label, combox_list)

        # 绑定槽函数
        combox_list.currentIndexChanged.connect(self.combox_list_selected)

        # 把布局放入当前窗体
        self.setLayout(layout)

    def combox_list_selected(self, idx):
        item = self.sender()
        print(f'你选择的是:{item.currentText()},索引是{idx}')


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

3 表格控件

python 复制代码
from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QVBoxLayout, QTableWidget, QTableWidgetItem
from PyQt5.QtGui import QFont
import sys

data_header = ['序号', '代码', '名称', '价格', '涨跌幅', '涨跌额']
data_body = [['1', '688628', '优利德', '35.22', '0.2', '5.87'],
             ['2', '300845', '捷安高科', '24.36', '0.2', '4.06'],
             ['3', '301289', '国缆检测', '51.85', '0.172016', '7.61'],
             ['4', '300645', '正元智慧', '27.3', '0.170167', '3.97'],
             ['5', '300248', '新开普', '11.39', '0.152834', '1.51']]


class MyWindow(QWidget):  # QWidget, QDialog容器类
    def __init__(self):
        super().__init__()

        # 设置窗口大小
        self.resize(800, 400)
        # 设置标题
        self.setWindowTitle('这是一个PyQT窗口')

        layout = QVBoxLayout()  # 垂直布局

        table = QTableWidget()
        # 设置行数
        table.setRowCount(len(data_body))
        # 设置列数
        table.setColumnCount(len(data_header))
        # 设置字体
        table.setFont(QFont("仿宋", 12))
        # 设置表头
        table.setHorizontalHeaderLabels(data_header)
        # 填充数据
        for row in range(len(data_body)):
            for col in range(len(data_header)):
                data_item = QTableWidgetItem(data_body[row][col])
                table.setItem(row, col, data_item)

        table.itemSelectionChanged.connect(self.table_changed)

        layout.addWidget(table)

        # 把布局放入当前窗体
        self.setLayout(layout)

    def table_changed(self):
        table = self.sender()
        select_row = table.currentRow()
        print(data_body[select_row])


if __name__ == '__main__':
    # 创建应用程序对象,  sys.argv 获取命令行参数
    app = QApplication(sys.argv)
    window = MyWindow()
    window.show()
    sys.exit(app.exec_())
相关推荐
Csvn17 小时前
🌟 LangChain 30 天保姆级教程 · Day 13|OutputParser 进阶!让 AI 输出自动转为结构化对象,并支持自动重试!
python·langchain
Wenweno0o18 小时前
0基础Go语言Eino框架智能体实战-chatModel
开发语言·后端·golang
chenjingming66618 小时前
jmeter线程组设置以及串行和并行设置
java·开发语言·jmeter
cch891818 小时前
Python主流框架全解析
开发语言·python
不爱吃炸鸡柳18 小时前
C++ STL list 超详细解析:从接口使用到模拟实现
开发语言·c++·list
十五年专注C++开发18 小时前
RTTR: 一款MIT 协议开源的 C++ 运行时反射库
开发语言·c++·反射
Momentary_SixthSense18 小时前
设计模式之工厂模式
java·开发语言·设计模式
sg_knight18 小时前
设计模式实战:状态模式(State)
python·ui·设计模式·状态模式·state
好运的阿财18 小时前
process 工具与子agent管理机制详解
网络·人工智能·python·程序人生·ai编程
‎ദ്ദിᵔ.˛.ᵔ₎18 小时前
STL 栈 队列
开发语言·c++