在Python get参数中从类调用方法具有意外的类型

2024-04-26 09:23:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图调用“def getfile(self,text)”并且每次它返回“argument 1 has unexpected type”str

我该怎么避免呢? 代码如下:

from colorama import Fore, Back, Style
import configparser
from configobj import ConfigObj
from pyexcel import save_as
from PyQt5 import QtCore, QtGui, QtWidgets

    class Ui_DE(object):
        def setupUi(self, DE):
            DE.setObjectName("DE")
            DE.resize(1149, 517)
            font = QtGui.QFont()
            font.setPointSize(10)
            DE.setFont(font)
            self.GermanyBrowse = QtWidgets.QPushButton(DE)
            self.GermanyBrowse.setGeometry(QtCore.QRect(240, 60, 91, 21))
            self.GermanyBrowse.setObjectName("GermanyBrowse")
            self.GermanyBrowse.clicked.connect(self.getfile(DE))

        def getfile(self,text):
            filter = "Excel (*.xlsx *.xls *.xlsm *.csv)"
            fileName, _ = QtWidgets.QFileDialog.getOpenFileName(
                None,
                "Select file",
                "",
                filter)
            config = ConfigObj("Path.ini", encoding='latin-1')
            config["Path"][f"{text}"] = fileName
            config.write()
            return fileName

if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    DE = QtWidgets.QDialog()
    ui = Ui_DE()
    ui.setupUi(DE)
    DE.show()
    sys.exit(app.exec_())

我做错了什么让这不起作用?谢谢您!你知道吗


Tags: textfromimportselfconfigdefsysde
1条回答
网友
1楼 · 发布于 2024-04-26 09:23:34

试试看:

#from colorama import Fore, Back, Style
#import configparser
#from configobj import ConfigObj
#from pyexcel import save_as

from PyQt5 import QtCore, QtGui, QtWidgets

class Ui_DE(object):
    def setupUi(self, DE):
        DE.setObjectName("DE")
        DE.resize(1149, 517)
        font = QtGui.QFont()
        font.setPointSize(10)
        DE.setFont(font)
        self.GermanyBrowse = QtWidgets.QPushButton("MyButton", DE)
        self.GermanyBrowse.setGeometry(QtCore.QRect(240, 60, 91, 21))
        self.GermanyBrowse.setObjectName("GermanyBrowse")

        #self.GermanyBrowse.clicked.connect(self.getfile)       # (DE)     < -vvvvv
# +++
        self.GermanyBrowse.clicked.connect(lambda ch,text=self.GermanyBrowse.text() : self.getfile(text))

    def getfile(self, text):

        print("\ntext    >", text)                            # +++

        filter = "Excel (*.xlsx *.xls *.xlsm *.csv)"
        fileName, _ = QtWidgets.QFileDialog.getOpenFileName(
            None,
            "Select file",
            "",
            filter)

        print("fileName  >", fileName)  

#            config = ConfigObj("Path.ini", encoding='latin-1')
#            config["Path"][f"{text}"] = fileName
#            config.write()

        return fileName

if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    DE  = QtWidgets.QDialog() #QDialog() QWidget() 
    ui  = Ui_DE()
    ui.setupUi(DE)
    DE.show()
    sys.exit(app.exec_())

enter image description here

相关问题 更多 >