2017-06-14 5 views
0

メソッド内でグローバル変数を宣言して、別のUIメソッドの中で呼び出して使用できるかどうかは疑問でした。私が下に書いたコードは、ユーザが選択したtheresresholdsファイルを受け取り、実行ボタンがクリックされたときにそれを印刷することになっています。メソッド(Python)からグローバル変数を呼び出す

class Handler: 

    def on_filechooserbutton1_file_set(self, widget): 
     self.Thresholds = widget.get_filename() 
     with self.Thresholds as a: 
      global Thresholds 
      Thresholds = pd.read_table(a, sep=',') 

    def on_RUN_clicked(self, widget): 
     print Thresholds 

    def onDeleteWindow(self, *args): 
     Gtk.main_quit(*args) 


builder = Gtk.Builder() 
builder.add_from_file("DataAPP.glade") 
builder.connect_signals(Handler()) 

window = builder.get_object("MainWindow") 
window.show_all() 

Gtk.main() 

print Thresholds 

しきい値変数は、データフレームが含まれており、以前に定義されていますが、私はその方法のしきい値変数外を呼び出そうとするたびに、私はというエラーを取得:へどのように

NameError: global name 'Thresholds' is not defined 

どれsuggenestionsをこれを適切に行うことについて行きますか?

+0

グローバル' Thresholds'は存在しません。 –

+1

グローバルにする必要があると思われる場合は、デザインを再検討してください。あなたが問題を説明する方法から、あなたは単にselfを行うことができるように聞こえます。限界値 –

+0

私はこれを行っていますが、私はそのファイルをフィルタリングして、私が構築しているUIの他の部分にその情報を使用します。 – mdicrist

答えて

1

あなたが最初のグローバル変数を作成する必要があります。

Thresholds = None 

class Handler: 
    ... 
+0

私はこれを試しました。スレッシュホールドデータフレームを印刷するときは、出力としてNoneを得ます。 – mdicrist

+0

@mdicrist、 'print'はあなたについて話していますか?メインスクリプトのスクリプトか、ハンドラのスクリプトか? – Pigpag

+0

ハンドラで印刷するにはメインスクリプトが必要です。私はそれを動作させる方法を見つけたが、心配しない。グローバルな声明が働いた。私は 'self.Thresholds as a:' lineを 'open(self.Thresholds)as a:'に変更しなければならなかった。あなたの助けをありがとう! – mdicrist

0

これは、ファイルを開くために、私の構文が間違っていたことが判明します。ボタンをクリックすると、メインのスクリプトで、次のコードが動作したときのしきい値を印刷するには、両方のファイル: `on_filechooserbutton1_file_set`が少なくとも一度実行されるまで

class Handler: 

    def on_filechooserbutton1_file_set(self, widget): 
     self.Thresholds = widget.get_filename() 
     with open (self.Thresholds) as a: 
      global Thresholds 
      Thresholds = pd.read_table(a, sep=',') 

    def on_RUN_clicked(self, widget): 
     print Thresholds 

    def onDeleteWindow(self, *args): 
     Gtk.main_quit(*args) 


builder = Gtk.Builder() 
builder.add_from_file("DataAPP.glade") 
builder.connect_signals(Handler()) 

window = builder.get_object("MainWindow") 
window.show_all() 

Gtk.main() 

print Thresholds 
関連する問題