218*_*218 4 python user-interface tkinter
我有一个tkinter Entry框,用户可以在其中插入目录的路径.或者,用户可以单击按钮以选择目录.如何设置按钮的输出以填充"输入"框?我尝试了以下但dirname不是全局变量,因此无法识别UserFileInput.另外如何绑定输入字段旁边的按钮.
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()
Run Code Online (Sandbox Code Playgroud)
你UserFileInput应该回来var,而不是w.然后你可以var.set(dirname)在你的askdirectory函数中使用,而不必返回任何东西.
不过我不确定你想要达到的目标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()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9907 次 |
| 最近记录: |