Python PyQt4如何引用当前打开的对话框?

时间:2012-05-18 22:18:14

标签: python pyqt

我正在使用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)

我没有包含所有代码,只包括相关位。任何帮助,将不胜感激。感谢。

1 个答案:

答案 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