PyQt5

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
JakobPrie
User
Beiträge: 91
Registriert: Sonntag 21. Juni 2020, 11:12

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!
JakobPrie
User
Beiträge: 91
Registriert: Sonntag 21. Juni 2020, 11:12

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