带参数的PyQt新对话框

时间:2013-12-19 14:52:37

标签: python qt pyqt

我有问题试图从我的主窗口设置一个新的对话框传递路径参数,现在对话框只是闪烁并退出...我认为问题是我显示窗口,但我不能找出我应该放在哪里!
在这个XtractMainWindow.py文件中,我设置了主窗口并获取路径

from PyQt4.QtCore import *
from PyQt4.QtGui import *
import ui_XtractMainWindow
import AndroidDialog
import sys

class XtractMainWindow(QMainWindow, ui_XtractMainWindow.Ui_XtractMainWindow):
    def __init__(self, parent=None):
    super(XtractMainWindow, self).__init__(parent)
    self.setupUi(self)

    self.androidXtractButton.clicked.connect(self.setAndroid)

def setAndroid(self):
    filename = QFileDialog.getExistingDirectory(self, "Open Directory", "/home")
    print filename
    dialog = AndroidDialog.AndroidDialog(str(filename))
    dialog.show()


app = QApplication(sys.argv)
form =  XtractMainWindow()
form.show()
app.exec_()

这是AndroidDialog.py文件中的Dialog

from PyQt4.QtCore import *
from PyQt4.QtGui import *
import csv
import sys
import Android_extractor
import ui_android_dialog

class AndroidDialog(QDialog, ui_android_dialog.Ui_androidDialog):
    def __init__(self, filename, parent=None):
        super(AndroidDialog, self).__init__(parent)
        self.setupUi(self)

感谢您的任何建议!

1 个答案:

答案 0 :(得分:1)

dialog = AndroidDialog.AndroidDialog(str(filename))
dialog.show()

在这里,您可以看到您正在将对话框的引用保存在局部变量中。当setAndroid(self)完成执行时,垃圾收集器会收集(销毁)dialog变量。

请注意,只要存在对该窗口的引用,该窗口就会存在。

这样做:

self.dialog = AndroidDialog.AndroidDialog(str(filename))
self.dialog.show()

在这种情况下,self.dialog是一个类成员,垃圾收集器不会收集或销毁它。