【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_())
相关推荐
Chester_199910 分钟前
CSP202206C.角色授权
开发语言·数据结构·c++·蓝桥杯
晴天的雨.99216 分钟前
类和对象下(内部类,匿名对象,对象拷贝时的编译器优化)
开发语言·c++·算法
陈年老古董20 分钟前
PyTorch 实现 MNIST 手写数字识别学习笔记
笔记·python·深度学习·学习
其实防守也摸鱼20 分钟前
智能体推荐:精选 AI Agent 工具与实战指南
运维·开发语言·人工智能·学习·web安全·自动化
always_TT21 分钟前
【Python 字符串格式化:format() 方法】
android·开发语言·python
小义_25 分钟前
JDK 深度解析
java·linux·开发语言·python·面试
SendTomo28 分钟前
send.wang:基于浏览器WebRTC实现无客户端文件互传
网络·python·网络协议·webrtc·p2p
智购科技自动售货机工厂40 分钟前
2026自动售货机异常重启根因分析:从日志挖掘到内存取证的技术实践~YH
开发语言·数据库·单片机·嵌入式硬件·人机交互
Escalating_xu1 小时前
【C++类和对象(上)】从类的定义、封装与对象模型到内存对齐和 this 指针
开发语言·前端·c++
whcyhhh1 小时前
头歌实践教学平台:大数据存储2023(十四下答案)
大数据·数据库·python