PyQt中的QFileDialog
我刚开始学习PyQt编程,写了一段代码用来浏览文件。代码如下:
from PyQt4 import QtCore, QtGui
try:
_fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
def _fromUtf8(s):
return s
try:
_encoding = QtGui.QApplication.UnicodeUTF8
def _translate(context, text, disambig):
return QtGui.QApplication.translate(context, text, disambig, _encoding)
except AttributeError:
def _translate(context, text, disambig):
return QtGui.QApplication.translate(context, text, disambig)
class Ui_mainDialog(object):
def setupUi(self, mainDialog):
mainDialog.setObjectName(_fromUtf8("mainDialog"))
mainDialog.resize(648, 48)
self.formLayout = QtGui.QFormLayout(mainDialog)
self.formLayout.setObjectName(_fromUtf8("formLayout"))
self.horizontalLayout = QtGui.QHBoxLayout()
self.horizontalLayout.setContentsMargins(-1, 2, -1, -1)
self.horizontalLayout.setObjectName(_fromUtf8("horizontalLayout"))
self.label = QtGui.QLabel(mainDialog)
self.label.setObjectName(_fromUtf8("label"))
self.horizontalLayout.addWidget(self.label)
self.lineEdit = QtGui.QLineEdit(mainDialog)
self.lineEdit.setObjectName(_fromUtf8("lineEdit"))
self.horizontalLayout.addWidget(self.lineEdit)
self.import_2 = QtGui.QPushButton(mainDialog)
self.import_2.setObjectName(_fromUtf8("import_2"))
self.horizontalLayout.addWidget(self.import_2)
self.process = QtGui.QPushButton(mainDialog)
self.process.setObjectName(_fromUtf8("process"))
self.horizontalLayout.addWidget(self.process)
self.formLayout.setLayout(0, QtGui.QFormLayout.FieldRole, self.horizontalLayout)
QtCore.QObject.connect(self.import_2,QtCore.SIGNAL("clicked()"),self.callf)
self.retranslateUi(mainDialog)
QtCore.QMetaObject.connectSlotsByName(mainDialog)
def retranslateUi(self, mainDialog):
mainDialog.setWindowTitle(_translate("mainDialog", "Fatal error check", None))
self.label.setText(_translate("mainDialog", "Import *.f06 file", None))
self.import_2.setText(_translate("mainDialog", "Import", None))
self.process.setText(_translate("mainDialog", "Process", None))
def callf(self):
fileName = QtGui.QFileDialog.getOpenFileName(self, 'import f06 file', '/home/harisyam/Desktop', selectedFilter='*.txt')
if fileName:
print fileName
if __name__ == "__main__":
import sys
app = QtGui.QApplication(sys.argv)
mainDialog = QtGui.QDialog()
ui = Ui_mainDialog()
ui.setupUi(mainDialog)
mainDialog.show()
sys.exit(app.exec_())
当我运行这段代码时,主对话框会出现,但当我按下导入按钮时,文件选择器没有弹出来。有人能告诉我哪里出问题了吗?
这段代码比较长,因为我把一个.ui文件转换成了.py文件。我是在QT设计器中设计的界面。
1 个回答
1
把类名 Ui_mainDialog(object): 改成 class Ui_mainDialog(QtGui.QWidget):
另外,还有一个拼写错误。
QtCore.QObject.connect(self.import_2, QtCore.SIGNAL("clciked()"), self.callf)
这里的 "clciked" 应该改成 "clicked"。