tkFileDialog.askdirectory() || 后标签文本未更新Python
Label text not updating after tkFileDialog.askdirectory() || Python
我想请求一个目录并将路径放在标签上,这是我的代码:
from Tkinter import *
import tkFileDialog, os
def demana_directori():
global items, directori
directori=tkFileDialog.askdirectory(title='Escolleix directori')
imdr.configure(textvariable=directori)
items=os.listdir(directori)
for item in items:
llista1.insert(END,item)
llista1.insert(END,"1")
llista2.insert(END,"2")
##MAIN
finestra=Tk()
finestra.title("Creació del Fitxer Comprimit")
finestra.minsize('0','0')
f=Frame(finestra)
f.pack()
esq=Frame(finestra)
drt=Frame(finestra)
esqtp=Frame(esq)
esq.pack(side=LEFT,fill=BOTH)
esqtp.pack(side=TOP,fill=X)
esqtp1=Frame(esqtp)
esqtp2=Frame(esqtp)
directori=StringVar()
items=['']
dr=Button(esqtp1,text='Escollir directori treball',command=demana_directori)
dr.pack(side=LEFT)
imdr=Label(esqtp1,width=30,relief=SUNKEN,textvariable=directori)
imdr.pack(side=LEFT,fill=X)
finestra.mainloop()
核心问题是当我按下 dr 按钮时调用 demana_directori() 函数并正确执行所有内容,但是当它完成时似乎不会 运行 上面的代码按钮,导致标签不更新,或者如果我在按钮后放置 print('Hello') 也不起作用。
抱歉我的英语不好。
谢谢
使用 StingVar()
时,您需要调用方法 set()
来更改其值:
from Tkinter import *
import tkFileDialog, os
def demana_directori():
global items, directori
d = tkFileDialog.askdirectory(title='Escolleix directori')
directori.set(d)
##MAIN
finestra=Tk()
finestra.title("cc")
finestra.minsize('0','0')
f=Frame(finestra)
f.pack()
esq=Frame(finestra)
drt=Frame(finestra)
esqtp=Frame(esq)
esq.pack(side=LEFT,fill=BOTH)
esqtp.pack(side=TOP,fill=X)
esqtp1=Frame(esqtp)
esqtp2=Frame(esqtp)
esqtp2.pack()
esqtp1.pack()
directori=StringVar()
items=['']
dr=Button(esqtp1,text='Escollir directori treball',command=demana_directori)
dr.pack(side=LEFT)
imdr=Label(esqtp1,width=30,relief=SUNKEN,textvariable=directori)
imdr.pack(side=LEFT,fill=X)
finestra.mainloop()
我想请求一个目录并将路径放在标签上,这是我的代码:
from Tkinter import *
import tkFileDialog, os
def demana_directori():
global items, directori
directori=tkFileDialog.askdirectory(title='Escolleix directori')
imdr.configure(textvariable=directori)
items=os.listdir(directori)
for item in items:
llista1.insert(END,item)
llista1.insert(END,"1")
llista2.insert(END,"2")
##MAIN
finestra=Tk()
finestra.title("Creació del Fitxer Comprimit")
finestra.minsize('0','0')
f=Frame(finestra)
f.pack()
esq=Frame(finestra)
drt=Frame(finestra)
esqtp=Frame(esq)
esq.pack(side=LEFT,fill=BOTH)
esqtp.pack(side=TOP,fill=X)
esqtp1=Frame(esqtp)
esqtp2=Frame(esqtp)
directori=StringVar()
items=['']
dr=Button(esqtp1,text='Escollir directori treball',command=demana_directori)
dr.pack(side=LEFT)
imdr=Label(esqtp1,width=30,relief=SUNKEN,textvariable=directori)
imdr.pack(side=LEFT,fill=X)
finestra.mainloop()
核心问题是当我按下 dr 按钮时调用 demana_directori() 函数并正确执行所有内容,但是当它完成时似乎不会 运行 上面的代码按钮,导致标签不更新,或者如果我在按钮后放置 print('Hello') 也不起作用。
抱歉我的英语不好。
谢谢
使用 StingVar()
时,您需要调用方法 set()
来更改其值:
from Tkinter import *
import tkFileDialog, os
def demana_directori():
global items, directori
d = tkFileDialog.askdirectory(title='Escolleix directori')
directori.set(d)
##MAIN
finestra=Tk()
finestra.title("cc")
finestra.minsize('0','0')
f=Frame(finestra)
f.pack()
esq=Frame(finestra)
drt=Frame(finestra)
esqtp=Frame(esq)
esq.pack(side=LEFT,fill=BOTH)
esqtp.pack(side=TOP,fill=X)
esqtp1=Frame(esqtp)
esqtp2=Frame(esqtp)
esqtp2.pack()
esqtp1.pack()
directori=StringVar()
items=['']
dr=Button(esqtp1,text='Escollir directori treball',command=demana_directori)
dr.pack(side=LEFT)
imdr=Label(esqtp1,width=30,relief=SUNKEN,textvariable=directori)
imdr.pack(side=LEFT,fill=X)
finestra.mainloop()