4
我有点新手这么善良;-)PyQt4的文件名对话框
我有一个GUI,我提出用PyQt4的和Python 2.6与工作文件对话框,(即你按下一个按钮和一个窗口弹出并允许你选择一个文件来加载/保存)。 GUI的代码就像2000行,所以我将包括我认为很重要的位:
from PyQt4 import QtGui as qt
from PyQt4 import QtCore as qc
class NuclearMotion(qt.QWidget):
def __init__(self, parent=None):
super(NuclearMotion, self).__init__(parent)
file_button = qt.QPushButton("Use data from file")
mainLayout = qt.QGridLayout()
mainLayout.addWidget(file_button, 14, 8, 1, 2)
def choose_file():
file_name = qt.QFileDialog.getOpenFileName(self, "Open Data File", "", "CSV data files (*.csv)")
self.connect(file_button, qc.SIGNAL("clicked()"), choose_file)
self.setLayout(mainLayout)
if __name__ == '__main__':
import sys
app = qt.QApplication(sys.argv)
NuclearMotionWidget = NuclearMotion()
NuclearMotionWidget.show()
sys.exit(app.exec_())
上面的工作绝对没问题。我使用各种教程手动输入了所有代码。我现在已经使用QT设计器和pyuic4将一个新的GUI转换为一个.py文件。现在我无法使文件对话框工作。下面的代码导致错误类型:
from PyQt4 import QtCore, QtGui
class Ui_mainLayout(object):
def setupUi(self, mainLayout):
mainLayout.setObjectName(_fromUtf8("mainLayout"))
mainLayout.resize(598, 335)
mainLayout.setTabPosition(QtGui.QTabWidget.North)
mainLayout.setTabShape(QtGui.QTabWidget.Rounded)
mainLayout.setElideMode(QtCore.Qt.ElideLeft)
self.basic_tab = QtGui.QWidget()
self.file_button = QtGui.QPushButton(self.basic_tab)
QtCore.QObject.connect(self.file_button, QtCore.SIGNAL("clicked()"), self.choose_file)
def choose_file(self):
file_name = QtGui.QFileDialog.getOpenFileName(self, "Open Data File", "", "CSV data files (*.csv)")
if __name__ == "__main__":
import sys
app = QtGui.QApplication(sys.argv)
mainLayout = QtGui.QTabWidget()
ui = Ui_mainLayout()
ui.setupUi(mainLayout)
mainLayout.show()
sys.exit(app.exec_())
这段代码产生的GUI只是罚款和其他一切工作正常,包括信号。任何想法我做错了什么!?
所以如果我用(qt.QWidget)替换(对象)它应该工作?或者我需要添加它像(object,qt.QWidget)我会尝试它,但我远离我的电脑!感谢您的快速反应btw – Ben 2011-06-16 12:49:00
我试了一下,改变对象到QWidget工作完美! – Ben 2011-06-16 15:36:52