0

Eric4 と PyQt4 を使用してアプリを作成しています。

2 つのダイアログ ボックスがあり、1 つはスレッドとして実行され、もう 1 つは標準のダイアログ ボックスで、内部にラベルがあり、これを画像に変更したいと考えています。

メイン ウィンドウ スレッドが実行されるたびに、ダイアログ ボックスに表示されている現在の画像を新しい画像に変更したいと考えています。スレッドが実行されるたびに新しい画像を含む新しいダイアログ ボックスが作成されることを除いて、すべて正常に動作します。現在開いているダイアログ ボックスの画像を変更したいのです。

内部に画像があるダイアログ ボックス:

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)

すべてのコードを含めたわけではなく、関連するビットのみを含めました。

4

1 に答える 1

0

問題はSubWindow、画像を変更するたびに新しいものを作成していることです。関数内のSubWindow属性としてを作成することをお勧めします。MainWindowMainWindiw.__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
于 2012-05-18T22:53:03.293 に答える