资讯专栏INFORMATION COLUMN

PyQt5 调研(一)

Yi_Zhi_Yu / 358人阅读

摘要:首先,定义自定义信号其中来自于信号会携带两个字符串类型的数据。然后,在子窗口发射这个信号最终,在父窗口槽函数接受这个信号就是槽函数,用来接受信号

工具准备

编辑器: vscode OR Pycharm

vscode需要安装PYQT Integration 以及 Python 插件, Pycharm需要配置External Tools
pycharm配置External Tools

配置Qtdesigner.exe

program选择Qtdesigner.exe的路径, Arguments: $FilePath$, work directory: $FileDir$

配置PyUI, 将UI文件转换成Python文件

program: python, Arguments: -m PyQt5.uic.pyuic  $FileName$ -o $FileNameWithoutExtension$.py, work direactory: $FileDir$
布局绘制

没有布局的控件不会随着窗口的改变而改变,关于布局,看这个Qt布局博客

第一个控件: tableView
self.sm = QtGui.QStandardItemModel() // 标准数据模型

# 设置数据头栏名称
self.sm.setHorizontalHeaderItem(0, QtGui.QStandardItem("Name"))
self.sm.setHorizontalHeaderItem(1, QtGui.QStandardItem("NO."))

# 设置数据条目
self.sm.setItem(0, 0, QtGui.QStandardItem("张三"))
self.sm.setItem(0, 1, QtGui.QStandardItem("20120202"))

self.sm.setItem(1, 0, QtGui.QStandardItem("李四"))
self.sm.setItem(1, 1, QtGui.QStandardItem("20120203000000000000000"))

self.sm.setItem(2, 0, QtGui.QStandardItem("李四"))
self.sm.setItem(2, 1, QtGui.QStandardItem("20120203000000000000000"))

self.sm.setItem(3, 0, QtGui.QStandardItem("李四"))
self.sm.setItem(3, 1, QtGui.QStandardItem("20120203000000000000000"))

self.sm.setItem(4, 0, QtGui.QStandardItem("李四"))
self.sm.setItem(4, 1, QtGui.QStandardItem("20120203000000000000000"))

self.sm.setItem(5, 0, QtGui.QStandardItem("李四"))
self.sm.setItem(5, 1, QtGui.QStandardItem("20120203000000000000000"))

# 设置条目颜色和字体
self.sm.item(0, 0).setForeground(QtGui.QBrush(QtGui.QColor(255, 0, 0)))

self.sm.item(3, 1).setBackground(QtGui.QBrush(QtGui.QColor(255, 255, 0)))

# 按照编号排序
self.sm.sort(1, QtCore.Qt.DescendingOrder)

# 将数据模型绑定到QTableView
self.tableView.setModel(self.sm)

for c in range(self.tableView.horizontalHeader().count()):
    self.tableView.horizontalHeader().setSectionResizeMode(c) // 设置列宽自动填充·

关于动态新增行:对model进行操作就行,tableView会感应到数据变化

信号与槽

知道vue,react的事件机制会对pyqt的信号与槽机制的理解提供方便。

首先,定义自定义信号

insertSuccess = pyqtSignal(str, str)

其中pyqtSignal来自于from PyQt5.QtCore import pyqtSignal, insertSuccess信号会携带两个字符串类型的数据。

然后,在子窗口发射这个信号

self.name = self.lineEdit.text()
self.no = self.lineEdit_2.text()
self.hide()
self.insertSuccess.emit(self.name, self.no)

最终,在父窗口槽函数接受这个信号

 myDia = childWindow(self)
 myDia.insertSuccess.connect(self.deal_insert)

self.deal_insert就是槽函数,用来接受信号

def deal_insert(self, name, no):
    print("name: ", name, "no: ", no)

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/104433.html

相关文章

  • PyQt5 调研

    摘要:首先,定义自定义信号其中来自于信号会携带两个字符串类型的数据。然后,在子窗口发射这个信号最终,在父窗口槽函数接受这个信号就是槽函数,用来接受信号 工具准备 编辑器: vscode OR Pycharm vscode需要安装PYQT Integration 以及 Python 插件, Pycharm需要配置External Tools pycharm配置External Tools 配置...

    Jonathan Shieber 评论0 收藏0
  • PyQt5 简介

    摘要:是由一系列模块组成。超过个类,函数和方法。有两种证书,和商业证书。包含了窗口系统事件处理图像基本绘画字体和文字类。包含了协议的类。提供了处理数据库的工具。废弃了和的调用方式,使用了新的信号和处理方式。不再支持被标记为废弃的或不建议使用的。 本教程的目的是带领你入门PyQt5。教程内所有代码都在Linux上测试通过。PyQt4 教程是PyQt4的教程,PyQt4是一个Python(同时支...

    sevi_stuo 评论0 收藏0
  • 事件和信号——pyQT5

    摘要:事件目标是事件想作用的目标。处理事件方面有个机制。这个例子中,我们替换了事件处理器函数。代表了事件对象。程序展示信号发送实例能发送事件信号。我们创建了一个叫的信号,这个信号会在鼠标按下的时候触发,事件与绑定。 事件和信号 事件 signals and slots 被其他人翻译成信号和槽机制,(⊙o⊙)…我这里还是不翻译好了。 所有的应用都是事件驱动的。事件大部分都是由用户的行为产生的,...

    张春雷 评论0 收藏0
  • pyqt5——菜单和工具栏

    摘要:菜单和工具栏这个章节,我们会创建状态栏菜单和工具栏。是菜单栏工具栏或者快捷键的动作的组合。程序预览工具栏菜单栏包含了所有的命令,工具栏就是常用的命令的集合。把工具栏展示出来。 菜单和工具栏 这个章节,我们会创建状态栏、菜单和工具栏。菜单是一组位于菜单栏的命令。工具栏是应用的一些常用工具按钮。状态栏显示一些状态信息,通常在应用的底部。 主窗口 QMainWindow提供了主窗口的功能,使...

    JinB 评论0 收藏0

发表评论

0条评论

Yi_Zhi_Yu

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<