由于 Python 文档字符串注释长度,PyQt QProgressBar 无法正常工作?

Posted

技术标签:

【中文标题】由于 Python 文档字符串注释长度,PyQt QProgressBar 无法正常工作?【英文标题】:PyQt QProgressBar not working correctly due to Python docstring comment length? 【发布时间】:2011-03-06 20:20:41 【问题描述】:

使用 Python 3.1 和 PyQt,我试图让 QProgressBar 通过让条在小部件上滑动来显示任务正在运行。我发现可以通过将最小值和最大值设置为 0 来完成。

我让它正常工作,但是当它集成到我的程序中时,条形图只会显示在小部件的前 25% 中,然后重置回开始。我玩了好几个小时,我想我已经把它缩小到一个文档字符串。代码在底部。

如果我是第一次运行代码,进度条可以正常工作。但是,此后的任何时间都不起作用。如果我删除 .pyc 文件,那么它只会在第一次再次工作。

当我删除 def testfunction 文档字符串第二行的最后一个字符“j”或删除整个文档字符串时,它总是有效的。每次。

我错过了什么愚蠢的东西吗?我不想为了能够正确运行代码而更改我的文档字符串。

main.py

import sys
from PyQt4 import QtGui

from mainUI import Ui_Form
import comment

class mainForm(QtGui.QDialog):
    def __init__( self, parent=None ):
        QtGui.QWidget.__init__( self, parent )
        self.ui = Ui_Form()
        self.ui.setupUi( self )


if __name__ == "__main__":
    app = QtGui.QApplication( sys.argv )
    myapp = mainForm()
    myapp.show()
    sys.exit( app.exec_() )

mainUI.py

class comment():
    def testfunction( self ):
        """
        abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghij
        abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijabcdefghij
        abcdefghijklmnopqrstuvwxyzabcdefghijklmnopq
        abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcde
        abcdefghijklmnopqrstuvwxyzabcdefghij
        """
        pass
from PyQt4 import QtCore, QtGui
_fromUtf8 = lambda s: s
class Ui_Form(object):
    def setupUi(self, Form):
        Form.resize(206, 100)
        self.pgbTotalProgress = QtGui.QProgressBar(Form)
        self.pgbTotalProgress.setGeometry(QtCore.QRect(20, 30, 191, 23))
        self.pgbTotalProgress.setMaximum(0)
        self.pgbTotalProgress.setProperty(_fromUtf8("value"), 0)
        self.pgbTotalProgress.setObjectName(_fromUtf8("pgbTotalProgress"))

【问题讨论】:

哇,这很奇怪。也许尝试将文档字符串的开头和结尾与引号放在同一行? """abcdefghikjlmnop....abcdefghij""" 【参考方案1】:

我看到了同样的事情发生,并设法通过稍微调整窗口大小来解决它。

这听起来很疯狂,但它对我有用。我很想知道它是否也能让事情对你有用。一旦窗口被调整大小,我注意到栏在运行时按预期工作,经过几分钟的试验和错误设置窗口的初始大小,它一切都按预期工作,从那以后我没有看到这个问题。我在想可能是 Qt 中的一个错误?

【讨论】:

我很想知道您是否尝试过此操作以及是否有效。这是我现在在我自己的项目中见过几次的东西——调整窗口大小似乎可以解决问题。如果您找到了,我会对更好的解决方案感兴趣。

以上是关于由于 Python 文档字符串注释长度,PyQt QProgressBar 无法正常工作?的主要内容,如果未能解决你的问题,请参考以下文章

Python 如何写好注释与文档字符串o(* ̄▽ ̄*)ブ

意义模糊的函数签名……文档注释

小甲鱼python视频弟十二讲(关于字符串的方法及注释下)

是否有用于注释 C# 代码的标准(如 phpdoc 或 python 的文档字符串)?

PEP 8 -- Python代码格式规则

如何从 python 源代码中删除注释和文档字符串? [关闭]