【问题标题】:Argument 1 has unexpected type 'NoneType'?参数 1 有意外的类型“NoneType”?
【发布时间】:2017-04-20 08:00:50
【问题描述】:

我的 PyQt 按钮操作有问题。我想发送一个带有函数的字符串,但我收到了这个错误:

TypeError:参数 1 具有意外类型“NoneType”

import sys

from PyQt5.QtWidgets import QApplication, QPushButton, QAction
from PyQt5.QtCore import QObject, pyqtSignal
from PyQt5.QtGui import *
from PyQt5.uic import *

app = QApplication(sys.argv)
cocktail = loadUi('create.ui')

def mixCocktail(str):
      cocktail.show()
      cocktail.showFullScreen()
      cocktail.lbl_header.setText(str)


widget = loadUi('drinkmixer.ui')

widget.btn_ckt1.clicked.connect(mixCocktail("string"))

widget.show()
sys.exit(app.exec_())

【问题讨论】:

  • 这个错误出现在哪一行?
  • 回溯(最近一次调用最后):文件“-----\drinkmixer.py”,第 27 行,在 widget.btn_ckt1.clicked.connect(mixCocktail("string" )) 类型错误:参数 1 具有意外类型“NoneType”
  • 啊。那是因为你没有从 mixCocktail() 返回任何东西。
  • 从网上看一些例子,看起来它需要一个可调用的函数。在这种情况下,您应该将该参数替换为 lambda: micCocktail("string")
  • 非常感谢!现在可以了

标签: python pyqt5


【解决方案1】:

正如user3030010ekhumoro 所建议的,它需要一个可调用的函数。在这种情况下,您应该将该参数替换为 lambda: mixCocktail("string") 而且不要使用str,它是python 内置数据类型,我已将其替换为_str

import sys

from PyQt5.QtWidgets import QApplication, QPushButton, QAction
from PyQt5.QtCore import QObject, pyqtSignal
from PyQt5.QtGui import *
from PyQt5.uic import *

app = QApplication(sys.argv)
cocktail = loadUi('create.ui')

def mixCocktail(_str):
      cocktail.show()
      cocktail.showFullScreen()
      cocktail.lbl_header.setText(_str)
      

widget = loadUi('drinkmixer.ui')

widget.btn_ckt1.clicked.connect(lambda: mixCocktail("string"))

widget.show()
sys.exit(app.exec_())

更多关于 lambda 函数的信息:What is a lambda (function)?

【讨论】:

  • str 不是关键字 - 它是内置类型。
  • 感谢指正,我知道我写错了。
  • 这个答案是完全错误的。 comment by user3030010中给出了正确的解决方案。
  • @ekhumoro 已纠正。
  • 在您的帮助下将其制作为 wiki。
【解决方案2】:

而不是这个

widget.btn_ckt1.clicked.connect(mixCocktail("string"))

widget.btn_ckt1.clicked.connect(lambda:mixCocktail("string"))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-27
    • 2012-12-12
    • 2021-03-18
    • 2021-05-23
    • 1970-01-01
    相关资源
    最近更新 更多