我将原始代码简化为一小部分仍然可以重现该问题。以下代码适用于action = raw_input('next action? ')
而不是action = self.fake()
。为什么??!!具体来说,'label'窗口将使用类函数挂起并崩溃,但使用用户输入将显示两个重叠的图像没有问题。我无法理解这两者是如何影响PyQt的,特别是因为在图像更新后进行了更改。
import time
import sys
from PyQt4 import QtGui
class Basement(object):
def __init__(self):
self.app = QtGui.QApplication(sys.argv)
self.label = QtGui.QLabel()
def update_image(self):
self.im = QtGui.QImage('n-wall.png')
painter = QtGui.QPainter()
c_image = QtGui.QImage('bed.png')
painter.begin(self.im)
painter.drawImage(10, 10, c_image)
painter.end()
self.label.setPixmap(QtGui.QPixmap.fromImage(self.im))
self.label.show()
def fake(self):
return 'left'
def play_game(self):
### Update graphics / text
self.update_image()
### Decide action
action = self.fake()
#action = raw_input('next action? ')
time.sleep(5)
B = Basement()
B.play_game()