python – pyqt5 – 查找文档
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – pyqt5 – 查找文档,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2557字,纯文字阅读大概需要4分钟。
内容图文
![python – pyqt5 – 查找文档](/upload/InfoBanner/zyjiaocheng/805/254c53c9ac914af9b6b97673766b202e.jpg)
我一直在使用Summerfields关于使用Python和QT进行快速GUI编程的书籍… pyqt是精确的,但2007年的书使用版本4.something,我试图使用当前版本5.4.2. .
我想弄清楚有一些变化,并希望得到一些如何找到东西的帮助.以下是文件保存对话框的示例 – 来自书籍:
fname = QFileDialog.getSaveFileName(self,
"Image Changer - Save Image", fname,
"Image files ({})".format(" ".join(formats)))
这不起作用,可能主要是因为在pyqt5中,QFileDialog返回一个元组而不是一个字符串.我能解决这个问题的唯一方法就是试错. pyqt5文档引用了QT,我真的不明白.
我得到以下工作:
fname = QFileDialog.getSaveFileName(self, 'some text',
"whatever.png", '*.png')
if "." not in fname[0]:
fname[0] += ".png"
self.addRecentFile(fname[0])
self.filename = fname[0]
return self.fileSave()
哇,它的作品!但正是因为我正在努力,我才取得任何进展.
我尝试运行python解释器并输入:
from PyQt5.QtWidgets import QFileDialog
help(QFileDialog)
这是(有点)有用,但帮助的语法对我来说没有多大意义,我也没有看到getSaveFileName应该返回什么.这有点乏味 – @ $$的东西.
我错过了什么?
解决方法:
QFileDialog的一些静态函数在PyQt中有一个奇怪的历史.如果您不了解这段历史,很难理解各种版本的PyQt之间的差异.
根本问题很简单.在Python中,如果函数需要返回多个值,最常见的解决方案是返回元组.但是在C中,这实际上是不可能的,因此通常的解决方案是提供可以修改的参数.
QFileDialog.getSaveFileName的C签名是这样的:
getSaveFileName(
QWidget * parent = 0, const QString & caption = String(),
const QString & dir = QString(), const QString & filter = QString(),
QString * selectedFilter = 0, Options options = 0)
如您所见,四个QString参数并不完全相同.前三个是const,因此不会被函数修改,但是selectedFilter参数接受一个指向QString的指针,这意味着它可以.
最初,PyQt的主要用途是用于C原型(而不是开发Python应用程序),因此它的API更忠实于Qt API.这意味着,直到PyQt-4.6,从QFileDialog获取所选过滤器的唯一方法是以C方式执行,如下所示:
>>> s = QString() # string to be modified
>>> f = QFileDialog.getSaveFileName(None, 'Save', '', 'Img(*.png *.jpg)', s)
>>> print s
Img(*.png *.jpg)
事实上,这仍然适用于当前版本的PyQt4(当然,它提供了QString).
PyQt4稳步引入了许多变化,这些变化逐渐使得它越来越多地使用Python – 但正如上面的例子所示,这一切都是在不破坏向后兼容性的情况下完成的.当时,更改getSaveFileName的签名以返回元组会导致太多的破坏,因此getSaveFileNameAndFilter等函数被添加为临时折衷.
PyQt5没有这样的限制(它甚至不再需要提供QString).因此,最终可以做正确的事情(从Python的角度来看)并从getSaveFileName返回一个元组.这个原则现在适用于:如果你使用的是PyQt5,并且你在Qt文档中看到一个修改其参数的函数,你总是可以期望返回一个元组.
(PS:PySide的用户 – 比PyQt年轻得多 – 从来没有处理过这些问题.对于他们来说,静态QFileDialog函数总是做正确的事情).
内容总结
以上是互联网集市为您收集整理的python – pyqt5 – 查找文档全部内容,希望文章能够帮你解决python – pyqt5 – 查找文档所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。