Python 参数1具有意外类型';Ui#u主窗口';

Python 参数1具有意外类型';Ui#u主窗口';,python,pyqt,pyqt4,Python,Pyqt,Pyqt4,我正试图为我在这里的一些人的帮助下编写的一个小程序制作一个GUI,无论如何,我用PyQt制作了GUI,它看起来很好。我添加了一个名为dirButton的按钮,上面写着“选择目录” 在底线中,我在单击它时将其命名为self.browse,即: def browse(self): filename = QtGui.QFileDialog.getOpenFileName(self, 'Open File', '.') fname = open(filename) data =

我正试图为我在这里的一些人的帮助下编写的一个小程序制作一个GUI,无论如何,我用PyQt制作了GUI,它看起来很好。我添加了一个名为dirButton的按钮,上面写着“选择目录”

在底线中,我在单击它时将其命名为self.browse,即:

def browse(self):
    filename = QtGui.QFileDialog.getOpenFileName(self, 'Open File', '.')
    fname = open(filename)
    data = fname.read()
    self.textEdit.setText(data)
    fname.close()
但是,这是我得到的错误:

Traceback (most recent call last):
File "C:\Users\Kevin\Desktop\python-tumblr-0.1\antearaGUI.py", line 88, in browse
filename = QtGui.QFileDialog.getOpenFileName(self, 'Open File', '.')
TypeError: QFileDialog.getOpenFileName(QWidget parent=None, QString caption=QString(),     QString directory=QString(), QString filter=QString(), QString selectedFilter=None, QFileDialog.Options options=0): argument 1 has unexpected type 'Ui_mainWindow'
因此,ui_mainWindow是所有GUI按钮和GUI本身都存储在其中的类

class Ui_mainWindow(object):
我不明白为什么我会出错,有人有什么想法吗


这里有一个指向整个GUI的pastebin链接:

据我所知,您使用的是从
.Ui
文件生成的
Ui\u主窗口。正如您所看到的,
Ui\u mainWindow
只是一个包含小部件的python类
getOpenFileName
接收
QWidget
实例作为第一个参数。因此,您需要对
QWidget
QMainWindow
进行子类化,并在该类中定义方法

代码如下所示:

import sys

from PyQt4 import QtCore, QtGui

from file_with_ui import Ui_MainWindow

class Main(QtGui.QMainWindow, Ui_MainWindow):
    def __init__(self):
        QtGui.QMainWindow.__init__(self)
        self.setupUi(self)

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

if __name__ == "__main__":
    app = QtGui.QApplication(sys.argv)
    window = Main()
    window.show()
    sys.exit(app.exec_())
或者,您可以将
ui
存储为实例属性:

class Main(QtGui.QMainWindow):
    def __init__(self):
         QtGui.QMainWindow.__init__(self)
         self.ui=Ui_MainWindow()
         self.ui.setupUi(self)
并通过
self.ui
访问控件,例如:
self.ui.textEdit.setText(数据)

考虑阅读关于pyuic用法的教程,导入以下内容:

import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *
from PyQt4 import QtGui, QtCore
在类Ui_主窗口(对象)中,用QWidget替换对象:

Ui_MainWindow(QWidget)

好的,谢谢,我会读到的,我有另一个问题,我真的不知道该怎么办。我不熟悉类和方法,所以请耐心等待。我有一个脚本,可以读取目录中的文件,然后上传它们:这样我就可以上传目录中的每一张照片。但是,因为我使用的是一个类,我不知道如何从browse方法返回变量目录。我尝试返回目录,但它没有做任何事情。我也试着搜索,但找不到任何相关的东西。这是我通过browse方法定义目录的地方。@Anteara,您可以在类中定义
def upload(self,directory):…
,并将脚本中的代码添加到此函数中。然后在
browse
中添加对
self.upload(目录)
的调用。也读
Ui_MainWindow(QWidget)