我有一個程序運行多個線程,其中一個控制界面,另一個啓動一些功能,每隔幾秒鐘。我想時機線程更新進度條買的時候我做的,我得到:pyqt進度條
X Error: RenderBadGlyphSet (invalid GlyphSet parameter) 165
Extension: 150 (RENDER)
Minor opcode: 25 (RenderCompositeGlyphs32)
Resource id: 0x25
X Error: RenderBadGlyphSet (invalid GlyphSet parameter) 165
Extension: 150 (RENDER)
Minor opcode: 25 (RenderCompositeGlyphs32)
Resource id: 0x25
X Error: RenderBadGlyphSet (invalid GlyphSet parameter) 165
Extension: 150 (RENDER)
Minor opcode: 25 (RenderCompositeGlyphs32)
Resource id: 0x25
X Error: RenderBadGlyphSet (invalid GlyphSet parameter) 165
Extension: 150 (RENDER)
Minor opcode: 25 (RenderCompositeGlyphs32)
Resource id: 0x25
QPixmap: It is not safe to use pixmaps outside the GUI thread
QPixmap: It is not safe to use pixmaps outside the GUI thread
這裏是我的代碼:
#!/usr/bin/python
from PyQt4 import QtCore, QtGui
import time
class WTrainning(wMeta.WMeta, QtGui.QWidget):
def __init__(self):
super(WTrainning, self).__init__()
def createUI(self):
...
self.progressBar = QtGui.QProgressBar(self)
self.progressBar.setGeometry(QtCore.QRect(30, 70, 481, 23))
self.progressBar.setProperty("value", 24)
self.progressBar.setObjectName("progressBar")
QtCore.QObject.connect(self.progressBar, QtCore.SIGNAL("valueChanged(int)"), self.progressBar.setValue)
...
def modifyBarr(self, number):
self.progressBar.setValue(number)
class Crono(QtCore.QThread):
def __init__(self, parent):
QtCore.QThread.__init__(self,parent)
def checkStatus(self):
for x in range(1,101):
self.wtobject.modifyBarr(x)
time.sleep(1)
我會試着用信號(新舊版本)和爲UI更新創建專用線程,但沒有任何工作。我使用python 2.6.6和4.7.4的PyQt
你就錯了。你一定要使用信號和插槽。 – Dikei 2012-03-13 10:45:55
你的確應該使用信號和插槽。你能提供你用信號試過的代碼嗎? – 2012-03-13 10:50:56
QtCore.QObject.connect(self.progressBar,QtCore.SIGNAL(「valueChanged(int)」),self.progressBar.setValue) – amusero 2012-03-13 10:58:50