相关文章推荐
伤情的热水瓶  ·  ***mysql ...·  1 年前    · 
帅呆的板凳  ·  zeromq-4.1.2在windows下的 ...·  1 年前    · 
def display(): curtext = cbox.currentText() # 获取当前文本 ouput.setText(curtext) # 获取当前文本并作为字符串传递给QLabel显示出来 ouput = QLabel(window) ouput.resize(80, 20) ouput.move(150, 30) cbox = QComboBox(window) cbox.addItems(("one", "two", "three")) ouput.setText(cbox.currentText()) # 获取当前文本并作为字符串传递给QLabel显示出来 cbox.currentIndexChanged.connect(display) cbox.move(40, 10) window.show() app.exec_()
  • QListWidget 是列表控件
  • 信号:选项改变
  • 如何用户使用操作选中 QListWidget 中的某一个选项就会 发出 itemSelectionChanged 信号,可以这样指定处理该信号的函数
  • listsheet.itemSelectionChanged.connect(function)
  • 方法:添加一个选项
  • 代码中同样可以使用 addItem 方法来添加一个选项到 末尾 ,参数就是选项文本(与下拉框一样)
  • listsheet.addItem("测试一") listsheet.addItem("测试二") listsheet = QListWidget(window) listsheet.move(15, 5) listsheet.addItems(["测试一", "测试二", "测试三", "测试四", "测试五"]) listsheet.itemSelectionChanged.connect(display) window.show() app.exec_()
  • QTableWidget 是表格控件,默认模型提供基于项目的表格视图,如下图所示
  • 创建表格——需求已定
  • 表格小部件为应用程序提供标准的表格显示, QTableWidget 中的项目由 QTableWidgetItem 提供

    如果你想要一个使用你自己的数据模型的表,你应该使用 QTableView 而不是这个类

    表格小部件可以用所需数量的行和列来构建

    tablewidget = QTableWidget(3, 2, window) # 前面的 3 是指的行数;2 是指列数 tablewidget = QTableWidget(3, 2, window) tablewidget.setHorizontalHeaderLabels(("项目", "值")) # 设置水平标题 tablewidget.setVerticalHeaderLabels(["科目一", "科目二", "科目三"]) # 设置垂直标题 newitem = QTableWidgetItem("语文") tablewidget.setItem(0, 0, newitem) # 前面的 0 代表 row ;后面的 0 代表 column tablewidget.setItem(0, 0, QTableWidgetItem("语文"))
  • 如果单元格 已经被设置过 文本内容; item() 方法可以获取 指定位置 的 QTableWidgetItem ,再调用这个对象的 setText() 方法,就可以设置单元格文本内容
  • from PyQt5.QtWidgets import QTableWidgetItem tablewidget.setItem(0, 0, QTableWidgetItem("语文")) tablewidget.item(0, 0).setText("数学") # 这样就将原来的“语文”替换成“数学” newitem = QTableWidgetItem("语文") newitem.setFlags(Qt.ItemIsEnabled) # 名称字段不允许修改,默认是允许修改的 tablewidget.setItem(0, 0, newitem)
  • 如果想文本内容 居中对齐,每个当对应的 QTableWidgetItem 调用 setTextAlignment 方法
  • from PyQt5.QtWidgets import QTableWidgetItem from PyQt5.QtCore import Qt newitem = QTableWidgetItem("语文") newitem.setTextAlignment(Qt.AlignCenter) # 设置文本居中 tablewidget.setItem(0, 0, newitem) def display(): currentrow = tablewidget.currentRow() currentcolumn = tablewidget.currentColumn() label.setText(f"行数是{currentrow},列数是{currentcolumn}") label = QLabel(window) label.resize(250, 50) label.move(300, 50) tablewidget = QTableWidget(3, 2, window) tablewidget.move(12, 5) tablewidget.setHorizontalHeaderLabels(("项目", "值")) tablewidget.setVerticalHeaderLabels(["科目一", "科目二", "科目三"]) tablewidget.itemSelectionChanged.connect(display) window.show() app.exec_() tablewidget.setColumnWidth(0, 100) # 设置第 1 列的宽度为 100像素 tablewidget.setColumnWidth(1, 50) # 设置第 2 列的宽度为 50像素 tablewidget.setRowHeight(0, 50) # 设置第 1 行的高度为 50像素 tablewidget.setRowHeight(1, 80) # 设置第 2 行的高度未 80像素
  • 让 表格控件宽度 随着父窗口的缩放自动缩放,使用下面代码
  • tablewidget.horizontalHeader().setStretchLastSection(True)
  • 信号:单元格内容改动
  • 当用户修改了一个单元格的内容,会发出 cellChanged 信号, 并且携带参数指明该单元格的行号和列号
  • from PyQt5.Qt import *
    from PyQt5.QtWidgets import QTableWidgetItem
    app = QApplication([])
    window = QWidget()
    window.resize(500, 250)
    window.move(300, 300)
    def display(row, column):
        value = tablewidget.item(row, column).text()
        label.setText(f"修改值为:{value}")
    label = QLabel(window)
    label.resize(200, 30)
    label.move(300, 50)
    tablewidget = QTableWidget(3, 2, window)
    tablewidget.move(12, 5)
    tablewidget.setHorizontalHeaderLabels(("项目", "值"))
    tablewidget.setVerticalHeaderLabels(["科目一", "科目二", "科目三"])
    tablewidget.cellChanged.connect(display)
    window.show()
    app.exec_()