2017-11-05 3 views
0

Ich habe ein Stück von Python-Code wie folgt aus:Python - wie der Wert einer Variablen in einer Funktion verwenden, die aufgerufen wird, wenn eine Schaltfläche geklickt wird

class MainWindow(QtGui.QMainWindow): 
    def __init__(self): 
     QtGui.QMainWindow.__init__(self) 

    --snip--   

     self.ui.pushButton.clicked.connect(self.selectFile) 
     someParameter = someFunction(self.filename) # (1) 

    def selectFile(self): 
     self.ui.lineEdit.setText(QtGui.QFileDialog.getOpenFileName()) 
     self.filename = self.ui.lineEdit.text() # I want to use "filename" variable in (1) 

    --snip-- 

Ich möchte den Namen der Datei fangen welches von QFileDialog ausgewählt wird und zwei Dinge tut; Erstens, zeigen Sie die Adresse der Datei in einem lineEdit-Widget an und speichern Sie zweitens die Adresse der Datei in einer Variablen, damit ich sie später für den Rest des Prozesses verwenden kann. Wie soll ich das machen und was ist der richtige Weg?

Antwort

1

Es scheint, dass Sie nicht mit objektorientierter Programmierung vertraut sind. In der objektorientierten Programmierung gibt es eine member und method in einer Class. In diesem Fall sollten Sie member so definieren, dass Sie später damit umgehen können. Sie sollten also wissen, was in der objektorientierten Programmierung member ist.

class MainWindow(QtGui.QMainWindow): 
    def __init__(self): 
     QtGui.QMainWindow.__init__(self) 
     self.filename = "" 
     self.someParameter = None 

    --snip--   

     self.ui.pushButton.clicked.connect(self.selectFile) 

    def setParameter(self): 
     self.someParameter = someFunction(self.filename) 

    def selectFile(self): 
     self.filename = QtGui.QFileDialog.getOpenFileName() 
     self.ui.lineEdit.setText(self.filename) 
     self.setParameter() 

    --snip-- 

Hier Edited ist ein Beispielcode, die QFileDialog.getOpenFileName verwenden. Versuche dies.

from PyQt5.QtWidgets import QWidget, QPushButton, QFileDialog, QVBoxLayout, QApplication 
from PyQt5 import QtGui 

class my_ui(QWidget): 
    def __init__(self, parent=None): 
     super(my_ui, self).__init__() 
     self.filename = "" 
     self.button1 = QPushButton("show dialog", parent) 
     self.button2 = QPushButton("do something", parent) 
     self.button1.clicked.connect(self.show_dialog) 
     self.button2.clicked.connect(self.do_something) 
     self.layout = QVBoxLayout() 
     self.layout.addWidget(self.button1) 
     self.layout.addWidget(self.button2) 
     self.setLayout(self.layout) 
    def show_dialog(self): 
     self.filename = QFileDialog.getOpenFileName() 
     print("filename updated: '%s'"%str(self.filename)) 
    def do_something(self): 
     print("filename = '%s'"%str(self.filename)) 

app = QApplication([]) 
sample_ui = my_ui() 
sample_ui.show() 
app.exec_() 
+0

Wie kann ich sicherstellen, dass der Wert aktualisiert wird? (wie Drucken nur zum Überprüfen des Wertes verwenden) – gnome

+0

@gnome: Welche Variable möchten Sie überprüfen und nach welcher Methode? –

+0

Ich möchte den von FileDialog ausgewählten Dateinamen verwenden und ihn später mit einem anderen Modul öffnen (um die darin enthaltenen Daten zu lesen und mathematische Dinge zu tun) – gnome

Verwandte Themen