gpt4 book ai didi

python - 参数 1 具有意外类型 'Ui_mainWindow'

转载 作者:太空宇宙 更新时间:2023-11-03 20:41:09 27 4
gpt4 key购买 nike

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

self.dirButton = QtGui.QPushButton(self.buttonWidget)
self.dirButton.setGeometry(QtCore.QRect(0, 0, 91, 61))
self.dirButton.setObjectName(_fromUtf8("dirButton"))
self.dirButton.clicked.connect(self.browse)

在最后一行,当我点击它时,我让它调用 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 链接:http://pastebin.com/BWCcXxUW

最佳答案

据我了解,您正在使用从 .ui 文件生成的 Ui_mainWindow 。正如你所看到的,Ui_mainWindow 只是包含小部件的 python 类。 getOpenFileName 接收 QWidget 实例作为第一个参数。因此,您需要子类化 QWidgetQMainWindow 并在该类中定义方法。

代码如下所示:

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(data)

考虑阅读有关 pyuic 用法的教程 PyQt by Example (Session 1)

关于python - 参数 1 具有意外类型 'Ui_mainWindow',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56851734/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com