【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_())
相关推荐
weixin1997010801615 分钟前
[特殊字符] 智能数据采集:数字化转型的“数据石油勘探队”(附Python实战源码)
开发语言·python
想唱rap35 分钟前
IO多路转接之poll
服务器·开发语言·数据库·c++
@杰克成1 小时前
Java学习30
java·开发语言·学习
次元工程师!1 小时前
LangFlow开发(三)—Bundles组件架构设计(3W+字详细讲解)
java·前端·python·低代码·langflow
三品吉他手会点灯1 小时前
C语言学习笔记 - 40.数据类型 - scanf函数的编程规范与非法输入处理
c语言·开发语言·笔记·学习
凯瑟琳.奥古斯特1 小时前
数据冗余与规范化的本质[数据库原理]
开发语言·数据库·职场和发展
t_hj1 小时前
大模型微调
人工智能·python·深度学习
码农老李2 小时前
openEuler2403服务器版 原生官方镜像和飞腾定制镜像
开发语言·php
charlie1145141912 小时前
现代Qt开发教程(新手篇)2.3——QImage、QPixmap、QIcon 图像处理基础
开发语言·图像处理·qt
范范@2 小时前
python基础-函数
开发语言·python