PySide2开发常见问题解决方案

1 篇文章 0 订阅
1 篇文章 0 订阅

大家好,我是一名热爱Python开发的初三党,当我第一次接触PySide2时,那时的官方文档不是很全,网上教程也相对较少,主要还是PySide2发布较晚的问题,那么我今天就来和大家分享一下我在使用PySide2开发图形界面时遇到的一些问题与解决方案,PyQt5、PySide6同时适用。全文无废话,直接放代码。


问题一 按钮相关问题

1、按钮绑定函数

假设我的按钮名为:yourLabelName,我需要绑定的函数为:yourFunctionName(),直接使用clicked.connect来连接到函数

self.yourLabelName.clicked.connect(yourFunctionName)  # 括号中添加绑定函数名,函数名后不添加括号

2、按钮多次触发函数

之前当我运行我的第一个按钮事件时,突然遇到个严重问题,按下后绑定的函数多次执行,解决方法:条件同上,只需在函数名后加Qt.UniqueConnection即可。解释:与槽连接时Qt默认使用AutoConnection模式,需要更改为UniqueConnection模式来防止重复连接,如果当前信号和槽已经连接过了,就不再连接了

self.yourLabelName.clicked.connect(yourFunctionName, Qt.UniqueConnection)  # 只需在后面加Qt.UniqueConnection即可

问题二 刷新页面问题

1、实现线程实时刷新页面 

我之前练习做计时器时,页面刷新问题困扰我好久,直至查阅PyQt5的教程时才得以解决。详情请单击此处链接查看。

其中需要注意的:如果你使用的为Qt Designer生成Python代码,在使用该方法刷新页面时,注意:请将UI类retranslateUi函数中首行代码删除,否则刷新无效,示例如下:

def retranslateUi(self, Widget):  # UI类中retranslateUi函数
    Widget.setWindowTitle(QCoreApplication.translate("Widget", u"Widget", None))  # 一定要删除该行,否则刷新页面无效果

2、触发按钮刷新页面

def uiUpdate(self):  # 定义槽函数,该函数请在类中插入,括号里加self,不然会报错
    ……
    QApplication.processEvents()

学以致用,假设我的按钮名为:yourLabelName,函数绑定示例:

self.yourLabelName.clicked.connect(self.uiUpdate, Qt.UniqueConnection)  # 在类中定义的函数须在前面加self

问题三 打包运行问题

1、Pyinstaller 相关

  • 不要使用pyinstaller里 -F 单文件打包指令
  • 打包后报错提示:"ModuleNotFoundError: No moduel named 'PySide2.QtXml'"时,在打包命令后加 --hidden-import PySide2.QtXml 。例如:假设我需要打包的文件名为pysideExam.pyw
    pyinstaller pysideExam.pyw --hidden-import PySide2.QtXml  # 其中 --hidden-import 作用为导入丢弃相应报错的包

 2、引用 .ui 文件相关

  • 如果你使用直接加载 .ui 文件的方式,请将 .ui 文件放置与源文件相同的打包后的路径

例如:我引用的 .ui 文件在原来文件 根目录/UI 文件夹下,那么完成打包后同时要在打包后的路径下新建一个UI文件夹将 .ui 文件存放进去。

问题四 Qt Designer

1、转换为Python代码报错解决方案

 若报错为以上内容,那么我们需要打开Designer的路径,创建一个名为"bin"的文件夹,将Designer目录下的uic.exe复制到刚刚创建的文件夹中,这时再次转换就不会报错了。

 2、替代品

目前所有软件都重在轻量化,直接转换为python代码会使源代码显得十分臃肿,所以建议大家使用Qt的另一款设计软件:Qt Creator。他可以直接帮你写好引用 .ui 文件的python代码直接调用,十分便捷,且界面相比Designer更现代化,可以点此进行下载(清华源),Windows、MacOS、Linux的安装包都有,请自行选择。该软件安装需要注册Qt账户

此文章会不断完善,如果您有相同经历、更多的注意事项或有更好的解决方法,欢迎在评论区留言!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值