【问题标题】:PyQt pushbutton to upload filePyQt 按钮上传文件
【发布时间】:2014-08-12 16:37:09
【问题描述】:

我想实现一个按钮,允许我从各种输入文件中进行选择并上传我选择的文件。我在网上搜索并整理了一些代码,问题是,我不完全了解如何在插槽中实现 fileDialogue。您在插槽“on_click”中看到的代码直接取自在线示例,它并没有真正起作用。主要问题是 getOpenFileName 需要参数之一是“self”,我不确定我是否知道如何在 PyQt 插槽中使用“self”。感谢您的帮助

import sys
from PyQt4 import QtGui,QtCore
from PyQt4.QtCore import pyqtSlot
from PyQt4.QtGui import *

@pyqtSlot()
def on_click():
        filename = QtGui.QFileDialog.getOpenFileName(self,'Open File', '.')
        fname = open(filename)
        data = fname.read()
        self.textEdit.setText(data)
        fname.close()



class MainWindow(QtGui.QWidget):
        def __init__(self):     #try removing parent=None
                QtGui.QWidget.__init__(self)
                self.setGeometry(650,300,600,600)
                self.setWindowTitle("Data Viewer")


                quitB = QtGui.QPushButton("QUIT",self)
                uploadB = QtGui.QPushButton("UPLOAD",self)

                hbox = QHBoxLayout()




self.connect(quitB,QtCore.SIGNAL('clicked()'),QtGui.qApp,QtCore.SLOT('quit()'))
                uploadB.clicked.connect(on_click(self))

                #add buttons to horizontal box layout
                hbox.addWidget(quitB)
                hbox.addWidget(uploadB)
                self.setLayout(hbox)
def main():
        app = QtGui.QApplication(sys.argv)
        mw = MainWindow()
        mw.show()
        sys.exit(app.exec_())


if __name__ == "__main__":
        main()

【问题讨论】:

    标签: pyqt4 qt-signals


    【解决方案1】:

    您在插槽“on_click”中看到的代码直接取自 在线示例,它并没有真正起作用。主要问题是 getOpenFileName 要求参数之一是“self”,我不是 确定我知道如何在 PyQt 插槽中使用“self”。

    我认为您将一些代码放在某个类中,例如 QWidget QMainWindows 等。但是,您可以将其删除。它只显示在 QTextEdit 中(我认为)。

    实际上,您可以使用QtCore.SIGNAL 连接您的getOpenFileName 在您的班级QMainWindows 中实现getOpenFileName。如果你愿意,你可以使用self 来实现。

    请看我的例子;

    import sys
    from PyQt4 import QtCore, QtGui
    
    class QDataViewer(QtGui.QWidget):
        def __init__(self):
            QtGui.QWidget.__init__(self)
            # Layout Init.
            self.setGeometry(650, 300, 600, 600)
            self.setWindowTitle('Data Viewer')
            self.quitButton = QtGui.QPushButton('QUIT', self)
            self.uploadButton = QtGui.QPushButton('UPLOAD', self)
            hBoxLayout = QtGui.QHBoxLayout()
            hBoxLayout.addWidget(self.quitButton)
            hBoxLayout.addWidget(self.uploadButton)
            self.setLayout(hBoxLayout)
            # Signal Init.
            self.connect(self.quitButton,   QtCore.SIGNAL('clicked()'), QtGui.qApp, QtCore.SLOT('quit()'))
            self.connect(self.uploadButton, QtCore.SIGNAL('clicked()'), self.open)
    
        def open (self):
            filename = QtGui.QFileDialog.getOpenFileName(self, 'Open File', '.')
            print 'Path file :', filename
    
    def main():
        app = QtGui.QApplication(sys.argv)
        mw = QDataViewer()
        mw.show()
        sys.exit(app.exec_())
    
    if __name__ == "__main__":
        main()
    

    问候,

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-15
      • 2021-01-01
      • 2011-03-24
      • 1970-01-01
      • 1970-01-01
      • 2013-07-15
      相关资源
      最近更新 更多