标签文本在之后未更新tkFileDialog.ask目录()| |Python

2024-10-16 17:24:48 发布

您现在位置: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')也无法工作。在

对不起,我的英语很差。在

谢谢


Tags: itemsleftfillframesidepackendinsert
1条回答
网友
1楼 · 发布于 2024-10-16 17:24:48

使用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()

相关问题 更多 >