由于 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 无法正常工作?的主要内容,如果未能解决你的问题,请参考以下文章