Seite 1 von 1

Argument in Funktion übergeben

Verfasst: Montag 15. Dezember 2014, 14:28
von möppi
Hi,

Ich wollte eine Funktion erstellen, die in Verbindung mit Klicken eines Push Buttons ein LineEdit löscht. Ich habe das bisher so gemacht:

Code: Alles auswählen

import sys
from functools import partial
from PyQt4.QtCore import *
from PyQt4.QtGui import *
from PyQt4.uic import *
import exe

def main():
    
    application = QApplication(sys.argv)
    frame = loadUi('inter.ui')
        
    def clear_line():
        frame.lineEdit.clear()

    frame.pushButton.clicked.connect(clear_line)

    frame.show()
    sys.exit(application.exec_())
 
if __name__ == '__main__':
    main()
Das ist aber ein wenig Mühselig, wenn ich für jedes Lineedit eine seperate Funktion definieren muss. Statdessen will ich mit 'connect' gleichzeitig ein Argument in die Funktion 'clear_line' übergeben. Also so was (was allerdings nicht funktioniert):

Code: Alles auswählen

import sys
from functools import partial
from PyQt4.QtCore import *
from PyQt4.QtGui import *
from PyQt4.uic import *
import exe

def main():
    
    application = QApplication(sys.argv)
    frame = loadUi('inter.ui')
        
    def clear_line(some_lineEdit):
        some_lineEdit.clear()

    frame.pushButton.clicked.connect(clear_line(frame.lineEdit))

    frame.show()
    sys.exit(application.exec_())
 
if __name__ == '__main__':
    main()
Wie kann man das am geschicktesten programmieren?

Re: Argument in Funktion übergeben

Verfasst: Montag 15. Dezember 2014, 14:41
von Sirius3
@möppi: mit functools.partial.

Re: Argument in Funktion übergeben

Verfasst: Montag 15. Dezember 2014, 14:42
von MagBen
Probier das mal:

Code: Alles auswählen

frame.pushButton.clicked.connect(frame.lineEdit.clear)

Re: Argument in Funktion übergeben

Verfasst: Montag 15. Dezember 2014, 15:14
von möppi
MagBen hat geschrieben:Probier das mal:

Code: Alles auswählen

frame.pushButton.clicked.connect(frame.lineEdit.clear)
Komisch. Ich war mir 100% sicher, dass ich das schon ausprobiert habe. Hab es jetzt wieder versucht und es klappt. Danke

Re: Argument in Funktion übergeben

Verfasst: Samstag 27. Dezember 2014, 19:36
von midas
Auch wenn das Problem schon gelöst ist du kannst der Funktion clear_line auch ein Parameter übergeben mit Hilfe einer Lambda Funktion

frame.pushButton.clicked.connect(lamda: clear_line(paramter))