【发布时间】:2018-03-15 13:24:32
【问题描述】:
我的项目中有两个课程。一个是 GUI,另一个是计算。我从第一个输入框中读取数据,并希望将它们传递给第二个。到目前为止,我所做的是:
class OptimizationGUI:
land_entry = 0
pop_entry = 0
def __init__(self, master):
self.land_entry_text = IntVar()
self.pop_entry_text = IntVar()
self.master = master
OptimizationGUI.land_entry = Entry(master, textvariable=self.land_entry_text)
self.advanced_options = Button(master, text="Advanced", command=self.advanced)
self.run = Button(master, text="RUN", command=self.start, bg='black', fg='red', bd=4)
def advanced(self):
advanced_window = Toplevel()
OptimizationGUI.pop_entry = Entry(advanced_window, textvariable=self.pop_entry_text)
def start(self):
opt = Optimization()
method = getattr(opt,'get_result')
yo = method()
在上面的代码中,我将两者作为类变量初始化,然后创建条目。我使用 getattr 从类 OptimizationGui 转到另一个类。其他类的代码如下:
class Optimization():
def __init__(self):
self.population = OptimizationGUI.pop_entry.get()
self.land = OptimizationGUI.land_entry.get()
print self.population, self.land
奇怪的是,当它正确打印land_entry 的数据时,当它到达self.population = OptimizationGUI.pop_entry.get() 行时,它会打印以下错误:
AttributeError: 'int' 对象没有属性 'get'
我看到这两者之间的唯一区别是 pop_entry 变量不在 init 函数中,而是在“高级”函数中。有什么办法可以克服?
【问题讨论】:
标签: python tkinter tkinter-entry class-variables getattr