Funktion nach Button connect funktioniert nicht...

Python und das Qt-Toolkit, erstellen von GUIs mittels des Qt-Designers.
Sirius3
User
Beiträge: 7778
Registriert: Sonntag 21. Oktober 2012, 17:20

Montag 6. November 2017, 11:15

@tt-web: `Tauch` hat kein __init__. `show` sollte nur von außen aufgerufen werden und dann auch nicht auf der ui-Komponente. Wie sieht denn Dein komplettes Programm aus?
tt-web
User
Beiträge: 23
Registriert: Dienstag 7. Juli 2015, 12:36

Montag 6. November 2017, 11:28

Hauptfenster:

Code: Alles auswählen

import sys
from PyQt5.QtWidgets import *
from PyQt5.uic import *
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from modulTauch import *
   
class test(QMainWindow):
    def __init__(self, parent=None):
        super().__init__(parent)
        self.lm = loadUi('ui/test.ui')
        self.lm.show()
        self.lm.actionTauch.triggered.connect(self.tauch)
        

    def tauch(self):
        Tauchapp.tauchapp(self)

 
if __name__ == '__main__':
    app = QApplication(sys.argv)
    myapp=test()
    sys.exit(app.exec_())
Aufzurufender Dialog aus modulTauch:

Code: Alles auswählen

import sys
from PyQt5.QtWidgets import *
from PyQt5.uic import *
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from berechnungTauch import *
   


class Tauchapp(QDialog):
    
    def tauchapp(self):
        print("tauchapp")
        self.ui = loadUi('ui/lm_tauch.ui')
        self.ui.show()
        self.ui.btnCalc.clicked.connect(self.berechnung)
       
        
    def berechnung(self):
        print("enter berechnung")
  
Sirius3
User
Beiträge: 7778
Registriert: Sonntag 21. Oktober 2012, 17:20

Montag 6. November 2017, 11:53

@tt-web: bevor Du hier anfängst, Module kreuz und quer zu importieren, schreib fürs erste alles in eine Datei. Sollte das irgendwann einmal zu viel für eine Datei werden, trenne Dinge ab, die für sich stehen können. Vermeide *-Importe, da Du nicht kontrollieren kannst, was da alles in den Namensraum geladen wird. `show` sollte nicht in __init__ aufgerufen werden. Du erzeugst keine Tauchapp-Instanz sondern versuchst direkt Methoden aufzurufen. Das sollte Dir eigentlich mit einem TypeError um die Ohren fliegen.

Code: Alles auswählen

import sys
import os
from PyQt5.QtGui import QApplication, QDialog, QMainWindow
from PyQt5.uic import loadUi

BASEPATH = os.path.dirname(__file__)

class Tauchapp(QDialog):
    def __init__(self):
        super().__init__()
        print("tauchapp")
        loadUi(os.path.join(BASEPATH, 'ui/lm_tauch.ui'), self)
        self.btnCalc.clicked.connect(self.berechnung)
       
    def berechnung(self):
        print("enter berechnung")   

class Test(QMainWindow):
    def __init__(self, parent=None):
        super().__init__(parent)
        loadUi(os.path.join(BASEPATH, 'ui/test.ui'), self)
        self.actionTauch.triggered.connect(self.tauch)
 
    def tauch(self):
        Tauchapp().show()
 
def main():
    app = QApplication(sys.argv)
    myapp = Test()
    sys.exit(app.exec_())

if __name__ == '__main__':
    main()
Antworten