摘要:首先,定义自定义信号其中来自于信号会携带两个字符串类型的数据。然后,在子窗口发射这个信号最终,在父窗口槽函数接受这个信号就是槽函数,用来接受信号
工具准备
编辑器: vscode OR Pycharm
vscode需要安装PYQT Integration 以及 Python 插件, Pycharm需要配置External Toolspycharm配置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布局博客
第一个控件: tableViewself.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/43947.html
摘要:首先,定义自定义信号其中来自于信号会携带两个字符串类型的数据。然后,在子窗口发射这个信号最终,在父窗口槽函数接受这个信号就是槽函数,用来接受信号 工具准备 编辑器: vscode OR Pycharm vscode需要安装PYQT Integration 以及 Python 插件, Pycharm需要配置External Tools pycharm配置External Tools 配置...
摘要:事件目标是事件想作用的目标。处理事件方面有个机制。这个例子中,我们替换了事件处理器函数。代表了事件对象。程序展示信号发送实例能发送事件信号。我们创建了一个叫的信号,这个信号会在鼠标按下的时候触发,事件与绑定。 事件和信号 事件 signals and slots 被其他人翻译成信号和槽机制,(⊙o⊙)…我这里还是不翻译好了。 所有的应用都是事件驱动的。事件大部分都是由用户的行为产生的,...
摘要:菜单和工具栏这个章节,我们会创建状态栏菜单和工具栏。是菜单栏工具栏或者快捷键的动作的组合。程序预览工具栏菜单栏包含了所有的命令,工具栏就是常用的命令的集合。把工具栏展示出来。 菜单和工具栏 这个章节,我们会创建状态栏、菜单和工具栏。菜单是一组位于菜单栏的命令。工具栏是应用的一些常用工具按钮。状态栏显示一些状态信息,通常在应用的底部。 主窗口 QMainWindow提供了主窗口的功能,使...
阅读 1508·2021-08-09 13:47
阅读 2767·2019-08-30 15:55
阅读 3491·2019-08-29 15:42
阅读 1114·2019-08-29 13:45
阅读 3008·2019-08-29 12:33
阅读 1742·2019-08-26 11:58
阅读 983·2019-08-26 10:19
阅读 2410·2019-08-23 18:00