我在PyQt中没有使用QPixmap,但我收到了QPixmap的警告:在PyQt中,在GUI线程之外使用像素图是不安全的。

3

我正在使用PyQt进行一个项目。但突然出现了以下错误:

QPixmap:在PyQt中,不安全地在GUI线程外部使用像素图

我没有在我的代码中使用QPixmap... 请帮忙。

class itemCheckBtn(QtGui.QDialog):
qApp = None;
okCallback = None;
def __init__(self,parent=None):
    itemCheckBtn.qApp=None;
    QtGui.QWidget.__init__(self, None)
    self.ui = Ui_merchantPriceFrom();
    self.ui.setupUi(self)
    QtCore.QObject.connect(self.ui.itemCheckButton, QtCore.SIGNAL("clicked()"), self.submit)
def submit(self):
    print "Hi";

主要的类是:
class MyForm(QtGui.QMainWindow):
  serverThreadObject = None;
  qApp = None;
  sock = None;
  def __init__(self, qApp,parent=None):
    MyForm.qApp=qApp;
    QtGui.QWidget.__init__(self, parent)
    self.ui = Ui_bluwavemerchantmain()
    self.ui.setupUi(self)
    self.ui.server_connection_status_label.setText("Server Offline..");
    QtCore.QObject.connect(self.ui.pushButton, QtCore.SIGNAL("clicked()"), self.connectUser )
    QtCore.QObject.connect(self.ui.actionStart_Server, QtCore.SIGNAL("triggered()"), self.startServer);
    QtCore.QObject.connect(self.ui.actionStop_Server, QtCore.SIGNAL("triggered()"), self.stopServerFromGui);
    QtCore.QObject.connect(self.ui.actionExit, QtCore.SIGNAL("triggered()"), self.closeEventFromMenu);
    QtCore.QObject.connect(self, QtCore.SIGNAL("triggered()"), self.closeEvent);

当我尝试从"MyForm"类调用"class itemCheckBtn"时,出现了错误。

1个回答

3
看起来您正在使用线程,并且以某种方式尝试从除主GUI线程之外的其他线程更改GUI(这是不允许的)。这可能是间接发生的 - 例如,您的服务器线程调用MyForm上的函数,该函数尝试更新itemCheckBtn。即使代码是MyForm的一部分,它仍然从服务器线程中执行。相反,您需要使用一些线程安全机制来通知GUI线程已发生更改,并让它完成GUI工作。(请参见http://doc.qt.nokia.com/4.6/threads-qobject.html

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接