gpt4 book ai didi

python - 如何使用 tkFileDialog.askdirectory 的输出来填充 tkinter 输入框

转载 作者:太空狗 更新时间:2023-10-30 02:20:07 24 4
gpt4 key购买 nike

我有一个 tkinter 输入框,用户可以在其中插入目录路径。或者,用户可以单击按钮来选择目录。如何设置按钮的输出以填充输入框?我已尝试以下操作,但 dirname 不是全局变量,因此 UserFileInput 无法识别。另外,如何绑定(bind)输入字段旁边的按钮。

from Tkinter import *
import tkFileDialog

def askdirectory():
dirname = tkFileDialog.askdirectory()
return dirname

def UserFileInput(status,name):
optionFrame = Frame(root)
optionLabel = Label(optionFrame)
optionLabel["text"] = name
optionLabel.pack(side=LEFT)
text = str(dirname) if dirname else status
var = StringVar(root)
var.set(text)
w = Entry(optionFrame, textvariable= var)
w.pack(side = LEFT)
optionFrame.pack()
return w


if __name__ == '__main__':
root = Tk()


dirBut = Button(root, text='askdirectory', command = askdirectory)
dirBut.pack(side = RIGHT)

directory = UserFileInput("", "Directory")


root.mainloop()

最佳答案

您的 UserFileInput 应该返回 var,而不是 w。然后,您可以在 askdirectory 函数中使用 var.set(dirname),它不必返回任何内容。

但是我不确定您尝试使用 text = str(dirname) if dirname else status 实现什么。为什么不直接使用 text = status 因为 dirname 还不能在那里定义?

编辑:这应该按照您希望的方式工作。 “打印条目文本”按钮显示您可以检索输入框中的任何内容,无论是用户编写的还是代码放置的。

from Tkinter import *
import tkFileDialog

def askdirectory():
dirname = tkFileDialog.askdirectory()
if dirname:
var.set(dirname)

def UserFileInput(status,name):
optionFrame = Frame(root)
optionLabel = Label(optionFrame)
optionLabel["text"] = name
optionLabel.pack(side=LEFT)
text = status
var = StringVar(root)
var.set(text)
w = Entry(optionFrame, textvariable= var)
w.pack(side = LEFT)
optionFrame.pack()
return w, var

def Print_entry():
print var.get()

if __name__ == '__main__':
root = Tk()

dirBut = Button(root, text='askdirectory', command = askdirectory)
dirBut.pack(side = RIGHT)
getBut = Button(root, text='print entry text', command = Print_entry)
getBut.pack(side = BOTTOM)

w, var = UserFileInput("", "Directory")

root.mainloop()

关于python - 如何使用 tkFileDialog.askdirectory 的输出来填充 tkinter 输入框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25282883/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com