我想要一个目录并将路径放在标签上,这是我的代码:
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()函数并完成其所有内容时,但是当它完成时似乎不会运行按钮上方的代码,结果在标签没有更新的情况下,或者如果我在Button工作之后打印(' Hello')。
抱歉我的英语很差。
由于
答案 0 :(得分:2)
使用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()