18

I have a problem with my PyQt button action. I would like to send a String with the Function but I got this Error:

TypeError: argument 1 has unexpected type '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_()) 
6
  • What line is this error showing up on? Commented Dec 5, 2016 at 20:14
  • Traceback (most recent call last): File "------\drinkmixer.py", line 27, in <module> widget.btn_ckt1.clicked.connect(mixCocktail("string")) TypeError: argument 1 has unexpected type 'NoneType' Commented Dec 5, 2016 at 20:16
  • Ah. That's because you aren't returning anything from mixCocktail(). Commented Dec 5, 2016 at 20:19
  • 8
    From looking at some example online, it looks like it expects a callable function. In which case you should replace that argument with lambda: micCocktail("string") Commented Dec 5, 2016 at 20:20
  • Thank you very much! Now it works Commented Dec 5, 2016 at 20:22

2 Answers 2

27

As suggested by user3030010 and ekhumoro it expects a callable function. In which case you should replace that argument with lambda: mixCocktail("string") AND ALSO don't use str it's a python built-in datatype I have replaced it with _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_()) 

More about lambda functions: What is a lambda (function)?

Sign up to request clarification or add additional context in comments.

5 Comments

str is not a keyword - it's a built-in type.
Thanks for rectifying, I knew I was writing something wrong.
This answer is completely wrong. The correct solution was given in the comment by user3030010.
@ekhumoro rectified.
made it wiki as it was from both of your assistance.
2

instead of this

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

write

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

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.