簡體   English   中英

PyQt4文件名對話框

[英]PyQt4 filename dialog

我是一個新手,所以要善良;-)

我有一個使用PyQt4和python 2.6制作的GUI,帶有一個工作文件對話框(即你點擊了一個按鈕,彈出一個窗口,允許你選擇要加載/保存的文件)。 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很好,其他一切工作正常,包括信號。 知道我做錯了什么!?

您的類應該(直接或間接)從QtCore.QObject繼承,以便能夠處理信號。 第一個繼承自QWidget,它完成了這項工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM