【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_())
相关推荐
七夜zippoe2 小时前
Python上下文管理器与with语句深度应用:从入门到企业级实战
python·异常处理·with·contextlib·exitstack
TheSumSt2 小时前
Python丨课程笔记Part1:Python基础入门部分
开发语言·笔记·python·学习方法
superman超哥2 小时前
Rust 注释与文档注释:代码即文档的工程实践
开发语言·算法·rust·工程实践·rust注释与文档注释·代码即文档
DO_Community2 小时前
加速 JavaScript 开发:DigitalOcean 应用托管现已原生支持 Bun
开发语言·前端·javascript
lly2024062 小时前
ECharts 响应式
开发语言
这周也會开心2 小时前
Java面试题-JVM
java·开发语言·jvm
a程序小傲2 小时前
字节跳动Java面试被问:Fork/Join框架的使用场景
开发语言·python
老歌老听老掉牙2 小时前
基于参数化模型的砂轮轮廓建模与可视化
python·数学建模
zwjapple2 小时前
React + Java 技术面试完整指南
java·开发语言·jvm·react