2012-05-07 117 views
0

所以我编写了这个GUI程序(使用tkinter),并且我在同一个函数中使用了三个Entrybox。我想在主函数中使用它们的值,那么如何将这些值转换成某种全局变量或者我可以在不同的函数中使用它们?从条目PYTHON 3获取变量

def options(): 

    options_root = Tk() 

    textFrame = Frame(options_root) 
    textFrame.grid() 

    widthlabel = Label(textFrame, text="w:", justify=LEFT) 
    widthlabel.grid(column="0", row="0") 
    widthinput = Entry(textFrame) 
    widthinput.grid(column="1", row="0") 

    heightlabel = Label(textFrame, text="h:", justify=LEFT) 
    heightlabel.grid(column="0", row="1") 
    heightinput = Entry(textFrame) 
    heightinput.grid(column="1", row="1") 

    mlabel = Label(textFrame, text="m:", justify=LEFT) 
    mlabel.grid(column="0", row="2") 
    minput = Entry(textFrame) 
    minput.grid(column="1", row="2") 

    width = widthinput.get() 
    height = heightinput.get() 
    m = minput.get() 


    start_game_button = Button(options_root, text="Start", justify=LEFT, command=lambda:tabort(options_root)) 
    start_game_button.grid(column="0",row="3") 
    exit_button = Button(options_root, text = "Exit", justify=LEFT, command=exit) 
    exit_button.grid(column="1", row="3") 

    mainloop() 

def main(): 

    options() 

    w = widthinput.get() 
    h = heightinput.get() 
    m = minput.get() 

main() 

回答

3

保留对小部件的引用,然后使用get()方法。如果您将应用程序设计为一个类,这将变得更加容易:

import tkinter as tk 

class SampleApp(tk.Tk): 
    def __init__(self, ...): 
     ... 
     self.width_entry = tk.Entry(...) 
     self.height_entry = tk.Entry(...) 
     self.minput_entry = tk.Entry(...) 
     ... 
    def main(...): 
     w = self.width_entry.get() 
     h = self.height_entry.get() 
     m = self.input_entry.get() 
     ... 

... 
app = SampleApp() 
app.mainloop() 
+0

所以现在我得到了这个错误,并且在一个类中做了这个。 w = ins.width() TypeError:'int'对象不可调用 – tivon

+0

@tivon:etror消息的哪部分不明白?它告诉你到底是什么错误。你似乎认为'width'是一个函数,但python认为它是一个int。 –