Eingabe aus QDialog kann ich nicht auslesen

Python und das Qt-Toolkit, erstellen von GUIs mittels des Qt-Designers.
Antworten
Tiger
User
Beiträge: 21
Registriert: Sonntag 25. Dezember 2022, 20:03

Wenn ich das Program a1400_sk.py als eigenständiges Programm aufrufe, kann ich eine Eingabe im Dialog-Fenster machen, die ich auch später auslesen kann. Soweit alles ok.

Rufe ich aber das Programm a1400_sk.py aus einem Main Programm (a1000_sk.py) auf, kann ich meine Eingabe aus dem Dialog-Fenster nicht auslesen. Wo ist mein Denkfehler?

Code: Alles auswählen


"""
	a1000_sk.py
"""
import sys, sqlite3
from PySide6.QtWidgets import QApplication, QMainWindow, QDialog
from PySide6.QtGui import QAction

from Qt_uic.frm_main import Ui_frm_main
from Qt_uic.dlg_test22 import Ui_dlg_test22


from a1000 import step1000
from a1100 import Step1100
from a1400_sk import Qdein

class Fenster01(QDialog,Ui_dlg_test22):
    def __init__(self):
        super().__init__()
        self.setupUi(self)

    def ein_bah_neu(self):
        self.s1 = Qdein()
        self.s1.show()

class Frm_main(QMainWindow,Ui_frm_main):
    def __init__(self, f1):
        super().__init__()
        self.setupUi(self)

        self.act_neuTur.triggered.connect(self.ein_tur_neu)
        self.act_bahNeu.triggered.connect(f1.ein_bah_neu)
        self.act_bahDea.triggered.connect(self.ein_bah_dea)
        self.act_tnrNeu.triggered.connect(self.ein_tnr_neu)
        self.act_tnrPau.triggered.connect(self.ein_tnr_pau)

    #   ->  Einstellungen/Neues Turnier neue DB anlegen
    def ein_tur_neu(self):
        step1000()                  # Db-File nach ..old.db kopieren
        Step1100.tabanl(self)              # Bestehende Tabellen löschen + neue anlegen
        Step1100.quittung(self)            # Bestätigung ausgeben, dass alles durchgeführt wurde

    #   ->  Einstellungen/Bahnen aktivieren / sperren
    def ein_bah_dea(self):
        pass

    #   ->  Einstellungen/neue Teilnehmer (Teams)
    def ein_tnr_neu(self):
        pass

    #   ->  Einstellungen/Teilnehmer (Teams) pausieren /aktivieren
    def ein_tnr_pau(self):
        pass

def main():
    app = QApplication(sys.argv)
    fenster1 = Fenster01()
    fenster = Frm_main(fenster1)
    fenster.show()
    sys.exit(app.exec())


if __name__ == "__main__":
    main()
   ##################################################################################### 
"""
    a1400_sk.py

"""


from PySide6.QtWidgets import QApplication, QMainWindow, QDialog, QMessageBox, QDialogButtonBox, QLineEdit
from Qt_uic.dlg_test22 import Ui_dlg_test22


class Qdein(QDialog, Ui_dlg_test22):
    def __init__(self):
        super().__init__()
        self.setupUi(self)
        self.buttonBox = QDialogButtonBox(self)
        self.buttonBox.accepted.connect(self.ok_btn())

    def ok_btn(self):
        print('Alles klar')
        print(self.lineEdit.text())  

Benutzeravatar
sparrow
User
Beiträge: 4193
Registriert: Freitag 17. April 2009, 10:28

Ohne jetzt im Detail drauf gechaut zu haben:
Es gibt einen Unterschied darin auf eine Funktion zu verweisenund eine Funktion auszuführen.

Code: Alles auswählen

self.buttonBox.accepted.connect(self.ok_btn())
self.okt_btn wird hier ausgeführt. Das willst du nicht. Und das tust du auch bei den anderen Stellen im Code nicht, wo du connect verwendest.
Benutzeravatar
Axel-WAK
User
Beiträge: 62
Registriert: Dienstag 29. November 2022, 11:52

ohne Klammern wäre besser

Code: Alles auswählen

self.buttonBox.accepted.connect(self.ok_btn)
OS: LMDE5 *** Homepage *** Github Seite
Sirius3
User
Beiträge: 17745
Registriert: Sonntag 21. Oktober 2012, 17:20

Variablen und Funktionen sollten keine kryptischen Abkürzungen enthalten, sondern aussagekräftig sein, a1000 und a1100 sind besonders schlechte Namen, wer kann schon den Unterschied zwischen 1000 und 1100 erkennen? Würde man ein_bah_dea einfach einstellungen_bahnen_aktivierung nennen, könnte man den Kommentar auch sparen.
Man generiert aus ui-Dateien keine Python-Dateien sondern lädt sie direkt.
Tiger
User
Beiträge: 21
Registriert: Sonntag 25. Dezember 2022, 20:03

Vielen Dank für Eure Antworten. Sicherlich habt ihr recht mit euren Kommentaren.- Aber leider haben mir die Antworten kein Stück näher zum meinem Ziel gebracht.
Bei der weiteren Programmierung werde ich das Umsetzen, was User „Sirius3“ geschrieben hat.

Zu meiner Person: Ich bin über 70 Jahre und habe vor einiger Zeit mit dem Python programmieren begonnen. Im zweiten Schritt habe ich mich mit OOP beschäftigt. Nun möchte ich den nächsten Schritt mit GUI Qt machen.
Dabei verfolge ich auch ein konkretes Projekt.

Über eine gut verständliche Problemlösung würde ich mich sehr freuen.
Benutzeravatar
__blackjack__
User
Beiträge: 13099
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Tiger: Was hast Du denn nicht verstanden? sparrow hat die Antwort geschrieben und Axel-WAK hat den Code dazu gezeigt.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
bb1898
User
Beiträge: 200
Registriert: Mittwoch 12. Juli 2006, 14:28

__blackjack__ hat geschrieben: Samstag 14. Januar 2023, 19:27 @Tiger: Was hast Du denn nicht verstanden? sparrow hat die Antwort geschrieben und Axel-WAK hat den Code dazu gezeigt.
Nur dass "wäre besser" hier nicht passt. Was Axel-WAK geschrieben hat, ist nicht besser, sondern richtig und müsste m.E. Dein Problem lösen.
Antworten