从方法调用全局变量(Python)

问题描述:

我想知道是否可以在方法内部声明全局变量,以便可以在另一个UI方法内调用它并使用它。我在下面写的代码应该采用用户选择的阈值文件,然后在点击运行按钮时打印出来。从方法调用全局变量(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'不会存在,直到'on_filechooserbutton1_file_set'运行至少一次。 –

+1

如果您认为它需要全球化,请重新考虑您的设计。从你描述问题的方式来看,这听起来像你可以简单地做self.Thresholds –

+0

我已经这样做了,但我将过滤该文件,并将为我正在构建的用户界面的其他部分使用该信息。 – mdicrist

,必须先创建全局变量:

Thresholds = None 

class Handler: 
    ... 
+0

我已经试过这个,当我去打印我的阈值数据框时,我得到None作为输出 – mdicrist

+0

@mdicrist,你正在谈论'print'吗?主脚本中还是处理程序中的一个? – Pigpag

+0

我需要主脚本在处理程序中打印出来。不用担心,但我找到了一种方法来使其工作。全球声明奏效。我不得不改变我的'self.Thresholds作为:'行到'与开放(self.Thresholds)作为:'。尽管谢谢您的帮助! – mdicrist

事实证明,我的语法来打开文件是错误的。要打印文件的阈值时都点击按钮并在主脚本中,下面的代码工作:

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