0

Python と Tkinter を使用して GUI アプリケーションを準備しています (この言語の初心者です)。

メインウィンドウと、開くいくつかのテキストパラメーターを含む構成サブウィンドウがあります。

def config_open():
  global wdw, e
  wdw = Toplevel()
  wdw.geometry('+400+400')

  w = Label(wdw, text="Parameter 1", justify=RIGHT)
  w.grid(row=1, column=0)
  e = Entry(wdw)
  e.grid(row=1, column=1)
  e.focus_set()

次に、次を呼び出す「OK」ボタンを追加します。

def config_save():
  global wdw, e
  user_input = e.get().strip()
  print user_input

それは機能しますが、すべてをグローバルとして宣言しています。サブウィンドウ内の要素を参照するより良い方法はありますか?

4

1 に答える 1

1
from Tkinter import *

def config_open():
    wdw = Toplevel()
    wdw.geometry('+400+400')
    # Makes window modal
    wdw.grab_set()

    # Variable to store entry value
    user_input = StringVar()
    Label(wdw, text="Parameter 1", justify=RIGHT).grid(row=1, column=0)
    e = Entry(wdw, textvariable=user_input)
    e.grid(row=1, column=1)
    e.focus_set()
    Button(wdw, text='Ok', command=wdw.destroy).grid(row=2, column=1)
    # Show the window and wait for it to close
    wdw.wait_window(wdw)
    # Window has been closed
    data = {'user_input': user_input.get().strip(),
            'another-option': 'value of another-option'}
    return data

class App:
    def __init__(self):
        self.root = Tk()
        self.root.geometry('+200+200')
        self.label_var = StringVar()
        self.user_input = None
        Button(self.root, text='Configure', command=self.get_options).place(relx=0.5, rely=0.5, anchor=CENTER)
        Label(self.root, textvariable=self.label_var).place(relx=0.5, rely=0.3, anchor=CENTER)
        self.root.mainloop()

    def get_options(self):
        options = config_open()
        self.user_input = options['user_input']
        self.label_var.set(self.user_input)

App()
于 2013-04-19T14:49:16.927 に答える