我正在使用Eric4和PyQt4创建一个应用程序,但是因为我是新手而请和我一起玩。
我有两个对话框,一个作为线程运行,另一个是带有标签的标准对话框,我想将其更改为图像。
每次主窗口线程运行时,我都希望它将对话框中显示的当前图像更改为新图像。一切正常,除非每次线程运行时都会创建一个新的对话框,里面有新图像 - 我希望它在当前打开的对话框中更改图像。
包含图片的对话框:
class SubWindow(QDialog, Ui_subWindow):
def __init__(self, parent = None):
QDialog.__init__(self, parent)
self.setupUi(self)
self.show()
def main(self, img):
pic = self.imgView
pic.setPixmap(QtGui.QPixmap(os.getcwd() + img))
更改图像的线程:
class MainWindow(QDialog, Ui_MainWindow, threading.Thread):
def __init__(self, parent = None):
threading.Thread.__init__(self)
QDialog.__init__(self, parent)
self.setupUi(self)
self.show()
#some code here which does some stuff then calls changeImg()
def changeImg(self):
img = SubWindow()
img.main(img)
我没有包含所有代码,只包括相关位。任何帮助,将不胜感激。感谢。
答案 0 :(得分:0)
看起来问题是每次要更改图像时都要创建新的SubWindow
。我建议在SubWindow
函数中将MainWindow
作为MainWindiw.__init__
的属性创建:
class MainWindow(QDialog, Ui_MainWindow, threading.Thread):
def __init__(self, parent = None):
threading.Thread.__init__(self)
QDialog.__init__(self, parent)
self.setupUi(self)
self.show()
self.img = SubWindow() # Create SubWindow once here
def changeImg(self):
self.img.main(self.img) # Only change the image, no new SubWindow