2017-11-05 6 views
0

をクリックされたときに呼び出される関数の内部変数の値を使用する私はこのようなPythonコードの部分を持っている:私は、ファイルの名前をキャッチしたいPythonの - どのようにボタンが

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-- 

これはQFileDialogによって選択され、2つのことを行います。まず、行編集ウィジェットでファイルのアドレスを表示し、次にファイルのアドレスを変数に格納して、後で残りのプロセスで使用できるようにします。どのようにすればいいですか?そして、正しい方法は何ですか?

答えて

1

あなたはオブジェクト指向プログラミングに慣れていないようです。 オブジェクト指向プログラミングでは、Classmembermethodがあります。

memberをこのように定義して、後で処理できるようにする必要があります。だから、memberがオブジェクト指向プログラミングにあるものについて学ぶべきです。

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-- 

編集

ここQFileDialog.getOpenFileNameを使用するいくつかのサンプルコードです。これを試して。

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

値が更新されていることを確認するにはどうすればよいですか? (値をチェックするためにprintを使うのと同じように) – gnome

+0

@gnome:どのような変数をチェックしたいのですか? –

+0

FileDialogで選択されたファイル名を使用し、後で別のモジュールを使用して開きたい(内部のデータを読み込んで数学的な処理を行う) – gnome