我的目标是能够将字符串变量传递给两个不同的条目以进行用户验证,并返回用户修改后的值。如果执行一次,代码可以正常工作;但是,在循环时,它只能在循环的第一次迭代中正确执行。在后续迭代期间,条目的字符串变量为空白。

我已经尝试过update_idletasks()并没有运气就可以入睡。我在Windows XP上运行Python 2.4。

# -*- coding: cp1252 -*-
import Tkinter

def retrieve_text():
    app_win.quit()

for item in range(3):

    numero_dossier = item+1
    version_dossier = item+2

    app_win = Tkinter.Tk()

    l = Tkinter.Label(app_win, text="Veuillez valider les informations suivantes et les corriger au besoin :")
    l.grid(row=0, column=0, columnspan=2)
    l.pack()

    v1 = Tkinter.StringVar()
    v1.set(numero_dossier)
    l1 = Tkinter.Label(app_win, text="Numéro de dossier:", anchor='w', justify='left')
    e1 = Tkinter.Entry(app_win, textvariable=v1)

    l1.pack()
    e1.pack()

    v2 = Tkinter.StringVar()
    v2.set(version_dossier)
    l2 = Tkinter.Label(app_win, text="Version du dossier:", anchor='w', justify='left')
    e2 = Tkinter.Entry(app_win, textvariable=v2)

    l2.pack()
    e2.pack()

    app_button = Tkinter.Button(app_win,text="OK",command=retrieve_text)
    app_button.pack()

    app_win.mainloop()

    app_win.withdraw()

    numero_dossier = e1.get().strip()
    version_dossier = e2.get().strip()

    print numero_dossier, version_dossier

最佳答案

这从根本上打破了:

for item in range(3):
    ...
    app_win = Tkinter.Tk()


Tkinter根本不是设计成这种方式。您的程序只应该创建类Tk的单个实例,并且应该只调用一次mainloop

关于python - Tkinter-设置字符串变量并在循环时获取条目值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14204414/

10-10 20:21