![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
PySide2
QT 开发
真的只是略懂而已
随便写写,写得不好请多多指教
展开
-
PySide2 子线程发信号更新界面、生产者消费者模型
需求是这样的:主线程需要把一些耗时操作放在子线程中执行,子线程执行完毕后通知主线程更新 UI。但是子线程只有一个,且耗时操作必须一个一个来,不能并发执行。怎么让子线程挨个执行主线程下发的命令呢?解决办法就是:主线程把需要执行的命令放在一个队列里,子线程不断去读取队列里的命令,然后挨个读取出来执行,执行完毕之后通知主线程更新 UI。在这里,主线程相当于生成者(生产命令),子线程相当于消费者(消费命令)。在这里,只有一个生产者和一个消费者,是最简单的生产者消费者模型。我这里有个样例程序,点击发送就是向子线程原创 2020-07-19 13:20:30 · 2549 阅读 · 1 评论 -
PyInstaller 打包依赖文件至目标程序目录
问题我使用 PySide2 开发了一个应用程序,为了方便其他人使用,我便使用 PyInstaller 打包成 *.exe。打包模式为 one-folder,即生成的目标文件是一个文件夹,里面包含了该 *.exe 文件及该 *.exe 所依赖的全部文件。打开该文件夹,截图如下:一切都很顺利,但是有这样一个问题,程序运行时依赖几个文件(*.png,*.txt),没有给我打包至目标目录下,*.exe 就找不到文件了,也就无法运行。解决办法使用配置文件 *.spec,指定依赖的文件一起打包。配置文件原创 2020-07-15 14:21:25 · 5939 阅读 · 1 评论 -
PySide2 QTableView 根据内容调整列宽
问题当某个单元格内容较多时,内容会显示不全,会以省略号的形式展示。我们希望列宽能够根据内容自动调整,调整至能够完全显示内容。、解决办法self.ui.tableView.resizeColumnsToContents() # 根据内容调整列宽...原创 2020-07-15 11:01:34 · 2195 阅读 · 2 评论 -
PySide2 控件靠右对齐
在布局中先添加伸缩属性:addStretch(),之后的控件就会右对齐。QHBoxLayout *pHLayout = new QHBoxLayout();pHLayout->addStretch(); // 添加伸缩pHLayout->addWidget(pButton1);pHLayout->addWidget(pButton2);pHLayout->addWidget(pButton3);pHLayout->addWidget(pButton4);pHLay原创 2020-07-09 13:49:59 · 1033 阅读 · 0 评论 -
PySide2 主动关闭应用、对话框、控件
退出程序QApplication::exit()关闭QDialogaccept():点击 OK 键reject():点击 Cancel 键done():点击右上角关闭按钮关闭 Widgetclose()原创 2020-07-08 17:29:40 · 2950 阅读 · 0 评论 -
PySide2 窗口退出时处理函数
用函数 app.aboutToQuit.connect(func_name)例如:def close_timer(self): if self.scanning_timer != None: self.scanning_timer.cancel() if self.polling_timer != None: self.scanning_timer.cancel() if __name__ == '__main__': app = QApplication([]) # 初始化原创 2020-07-02 16:57:25 · 4885 阅读 · 1 评论 -
PySide2 connect 时指定槽函数的参数
当点击按钮时,执行槽函数,一般写法为:self.ui.wind_bread.triggered.connect(self.controller.wind_bread)其中 self.controller.wind_bread 是槽函数。但是,如果需要给槽函数传参怎么办?就比如下面,槽函数需要一个参数:append_info。动作触发时,该怎么传递参数给槽函数呢?def wind_bread(self, append_info): if self.dataCollectorModel.wind原创 2020-07-02 09:53:06 · 3552 阅读 · 0 评论 -
PySide2 QTableView 左键点击事件
# 鼠标左键点击事件self.ui.tableView.clicked.connect(self.table_left_click)# 点击处理事件def table_left_click(self, item): # item 是你点击的那个单元格对象 sf = "You clicked on {0}x{1}".format(item.column(), item.row()) print(sf)知识点:tableView.clicked.connect(self.tabl原创 2020-07-01 11:09:25 · 2717 阅读 · 0 评论 -
PySide2 子线程更改主线程对象
在子线程中调用主线程的函数,函数中更改变量的操作,就出现了这个问题:cannot create children for a parent that is in a different thread.在程序中的代码如下:子线程想要告知主线程更新 UI,该怎么操作呢?...原创 2020-06-30 19:25:10 · 1176 阅读 · 0 评论 -
Qt Designer 添加 menubar
在 widget box 控件框中找了半天,但是没有找到 menubar,最后发现启用 menubar 需要在对象窗口那里,右键就对象就能找到了。工具栏、状态栏也是在这个地方启用。原创 2020-06-30 19:21:51 · 5699 阅读 · 2 评论 -
PySide2 QTextEdit 输出文字颜色
# 设定 RGB 颜色c = QColor(255, 0, 0)# 设置输出颜色edit_text.setTextColor(c)原创 2020-06-30 13:55:08 · 2655 阅读 · 0 评论 -
PySide2 QTableView 添加右键菜单
def init_context_menu(self): """ 初始化右键菜单 :return: """ # tableView 允许右键菜单 self.ui.tableView.setContextMenuPolicy(Qt.ActionsContextMenu) # 具体菜单项 send_option = QAction(self.ui.tableView) send_option.setText("发送控制代码") s原创 2020-06-29 16:46:53 · 3194 阅读 · 0 评论 -
PyInstaller 打包 exe
写了一个 Python 程序,想要打包成 exe 文件,就利用 PyInstaller 进行打包。我的环境:Win 7 64 位,Python 3.7 64位1、安装 PyInstallerpip install PyInstaller2、进行打包pyinstaller -F MainWindow.py若成功,就会在 ./dist 文件夹中找到 MainWindow.exe 。但是,大概率会失败。出现错误:lib not found解决:打包时指定依赖的 dll 路径,pyinstalle原创 2020-06-29 16:37:14 · 622 阅读 · 1 评论 -
PySide2 去掉 Dialog 的问号
创建出来的 Dialog 有一个问号,但是不想要。去掉方法:self.setWindowFlags(self.windowFlags() & ~Qt.WindowContextHelpButtonHint)self 就是 QInputDialog 这个类。完整代码如下,可直接运行:import sysfrom PySide2.QtCore import Qtfrom PySide2.QtWidgets import QInputDialog, QApplicationclas原创 2020-06-28 17:16:43 · 728 阅读 · 0 评论 -
PySide2 Splitter 设置初始比例
代码如下:# 新建一个分离器,垂直分离self.main_splitter = QSplitter(Qt.Vertical)# 分离器添加控件self.main_splitter.addWidget(self.ui.tableView)self.main_splitter.addWidget(self.ui.output_edit)# 设置窗口比例self.main_splitter.setStretchFactor(0, 8)self.main_splitter.setStretchF原创 2020-06-28 13:52:34 · 1267 阅读 · 1 评论 -
PySide2 更新界面卡顿
在主线程里面就一个 for 循环,然后程序就出现卡顿,代码如下:n_machine = len(data) # 机器数量# 假数据if data == {} or data is None: for i in range(1, n_machine + 1): data['%d' % i] = ('故障代码' + str(i), '控制代码' + str(i), '锁状态' + str(i), '实时角度' + str(i)原创 2020-06-28 13:27:23 · 1693 阅读 · 0 评论 -
PySide2 自定义 Signal
在 QT 官网看到的,网站:https://wiki.qt.io/Qt_for_Python_Signals_and_Slotsimport sys from PySide2.QtWidgets import QApplication, QPushButton from PySide2.QtCore import QObject, S原创 2020-06-24 13:59:10 · 2097 阅读 · 2 评论 -
QT desinger sizePolicy 各选项含义
其他博客看到的,记录一下:https://blog.csdn.net/qq_24508983/article/details/84033919但是,在 QT desinger 从来没看到 sizeHint 这个选项,sizeHint 怎么来的?原创 2020-06-23 11:06:42 · 1996 阅读 · 0 评论