从方法调用全局变量(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如何去正确地做这件事?
答
事实证明,我的语法来打开文件是错误的。要打印文件的阈值时都点击按钮并在主脚本中,下面的代码工作:
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
全局'Thresholds'不会存在,直到'on_filechooserbutton1_file_set'运行至少一次。 –
如果您认为它需要全球化,请重新考虑您的设计。从你描述问题的方式来看,这听起来像你可以简单地做self.Thresholds –
我已经这样做了,但我将过滤该文件,并将为我正在构建的用户界面的其他部分使用该信息。 – mdicrist