我想实现一个按钮,允许我从各种输入文件中选择并上传我选择的一个。我在网上搜索并汇总了一些代码,问题是,我不知道如何在一个插槽中实现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()
答案 0 :(得分:0)
您在插槽“on_click”中看到的代码直接来自 在线示例,它并没有真正起作用。主要问题是 getOpenFileName要求其中一个参数为“self”,我不是 我确定我知道如何在PyQt插槽中使用“self”。
我认为你把一些代码放在一些类中,比如QWidget QMainWindows等等。但是,你可以删除它。它只是在QTextEdit(我认为)中显示。
实际上,您可以使用getOpenFileName
连接QMainWindows
在您的班级QtCore.SIGNAL
中实施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()
此致