我有问题试图从我的主窗口设置一个新的对话框传递路径参数,现在对话框只是闪烁并退出...我认为问题是我显示窗口,但我不能找出我应该放在哪里!
在这个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)
感谢您的任何建议!
答案 0 :(得分:1)
dialog = AndroidDialog.AndroidDialog(str(filename))
dialog.show()
在这里,您可以看到您正在将对话框的引用保存在局部变量中。当setAndroid(self)
完成执行时,垃圾收集器会收集(销毁)dialog
变量。
请注意,只要存在对该窗口的引用,该窗口就会存在。
这样做:
self.dialog = AndroidDialog.AndroidDialog(str(filename))
self.dialog.show()
在这种情况下,self.dialog
是一个类成员,垃圾收集器不会收集或销毁它。