2014-11-12 3 views
0

По очень личным причинам я программирую процедурно. Предположим, я создаю окно Tkinter с виджем ввода и виджем кнопки в одной функции, и кнопка запускает другую функцию, которая должна обрабатывать содержимое виджета записи.Получение содержимого виджета входа в отдельную функцию

До сих пор мне удалось заставить его работать с StringVar и глобальными переменными.

Могу ли я избегать классов И глобальных переменных?

#!/USR/бен/питон

try: 
    # Python2 
    import Tkinter as tk 
except ImportError: 
    # Python3 
    import tkinter as tk 

import os 


def output(): 
    global gamename 
    print("The widget's value is: " + gamename.get()) 

def newGame(): 
    global gamename 

    win1 = tk.Toplevel() 

    e = tk.Entry(win1, textvariable = gamename) 
    e.place(x = 0, y = 30, width=200, height=30)  
    outp = tk.Button(win1, text="Print", command=output) 
    outp.place(x = 0, y = 110, width=200, height=30) 

    win1.mainloop() 

root = tk.Tk() 
gamename = tk.StringVar() 

newGame() 
tk.mainloop() 

ответ

1

"Могу ли я избежать классов и глобальных переменных?"

No.

Там просто нет веских причин, чтобы не использовать классы при написании больших программ в питона. Если вы пишете небольшие программы, нет ничего плохого в использовании глобалов.

Смежные вопросы