Seite 1 von 1

PyQt5

Verfasst: Mittwoch 16. September 2020, 15:10
von JakobPrie
Hallo,
ich möchte aus einem Skript heraus folgende Klasse aufrufen und als Rückgabewert eine Eingabe in einer lineEdit bekommen.

Code: Alles auswählen

from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QLabel, QLineEdit
from PyQt5.QtGui import QIcon, QFont
from PyQt5.QtCore import QRect, Qt


class Fenster(QWidget):
    def __init__(self):
        super().__init__()
        self.init_me()

    def init_me(self):
        self.setObjectName("MainWindow")
        self.setWindowTitle("LUNA - Serverconnection")
        self.resize(663, 347)
        self.setWindowIcon(QIcon("logo.png"))
        self.centralwidget = QWidget(self)
        self.centralwidget.setObjectName("centralwidget")
        self.pushButton = QPushButton(self.centralwidget)
        self.pushButton.setGeometry(QRect(450, 230, 171, 51))


        font = QFont()
        font.setPointSize(11)
        font.setBold(True)
        font.setWeight(75)

        self.pushButton.setFont(font)
        self.pushButton.setMouseTracking(True)
        self.pushButton.setObjectName("pushButton")
        self.pushButton.setText("Weiter")

        self.label = QLabel(self.centralwidget)
        self.label.setGeometry(QRect(30, 30, 601, 101))
        self.label.setObjectName("label")
        self.label.setText("<html><head/><body><p align=\"center\"><span style=\" font-size:11pt;\">Leider konnte dein Benutzername im PC keinem Nutzer im LUNA-System<br/>zugeordnet werden. Bitte gib deinen Vornamen ein, damit der Vorgang<br/>wiederholt werden kann.</span></p></body></html>")

        self.lineEdit_text = ""
        self.lineEdit = QLineEdit(self)
        self.lineEdit.setGeometry(QRect(120, 150, 431, 41))
        self.lineEdit.setText("")
        self.lineEdit.setMaxLength(20)
        self.lineEdit.setPlaceholderText("Dein Vorname")

        self.pushButton.clicked(self.return_name(self.lineEdit.text()))
        self.show()

    def return_name(self, text):
        return text
        self.close()


app = QApplication(sys.argv)
w = Fenster()
sys.exit(app.exec_())
1. Frage:
wie kann ich aus meinem Main.Skript heraus den Rückgabewert herbekommen?
also sowas wie:
import Frame
eingabe = Frame

2. Frage:
nun zum Fehler:

Code: Alles auswählen

Traceback (most recent call last):
  File "C:/Users/Jakob/Documents/Frame.py", line 63, in <module>
    w = Fenster()
  File "C:/Users/Jakob/Documents/Frame.py", line 10, in __init__
    self.init_me()
  File "C:/Users/Jakob/Documents/Frame.py", line 55, in init_me
    self.pushButton.clicked(self.return_name())
TypeError: native Qt signal is not callable

Process finished with exit code 1
Woher kommt der Fehler und wie kann ich ihn beheben?
Vielen Dank für die Hilfe!

Re: PyQt5

Verfasst: Mittwoch 16. September 2020, 15:45
von JakobPrie
Ich habe den Fehler, der ist ziemlich blöd von mir gewesen:
bei pushButton.clicked, wird in den Klammern ein boolean übergeben, ob er gedrückt wurde. Um das zu erreichen, was ich machen wollte, muss man folgendes schreiben:
self.pushButton.clicked.connect(self.return_name(self.lineEdit.text())