我使用Python 3.5和TKinter。 我定义了一个更新此标签的标签和文件对话框。 按钮负责启动此对话框。
self.sel_folder_val = the label that will be updated.
The code:
self.sel_folder_val['text']=filedialog.askdirectory()
按下按钮以启动此对话框后,按钮保持按下状态。关闭此对话框后,按钮负责打开的任何对话框都会使按钮保持低电平(按下)。 我也试过这个也没有帮助......:
self.select_folder_btn.config(relief=RAISED)
代码示例:
self.select_folder_btn = Button(self.top)
self.select_folder_btn.place(relx=0.07, rely=0.57, height=34, width=187)
self.select_folder_btn.configure(activebackground="#d9d9d9")
self.select_folder_btn.configure(activeforeground="#000000")
self.select_folder_btn.configure(background="#d9d9d9")
self.select_folder_btn.configure(disabledforeground="#a3a3a3")
self.select_folder_btn.configure(font=self.font3)
self.select_folder_btn.configure(foreground="#000000")
self.select_folder_btn.configure(highlightbackground="#d9d9d9")
self.select_folder_btn.configure(highlightcolor="black")
self.select_folder_btn.configure(pady="0")
self.select_folder_btn.configure(text='''Select destination folder''')
self.select_folder_btn.bind('<Button-1>',self.update_folder_value)
def update_folder_value(self,event):
self.sel_folder_val['text']=filedialog.askdirectory()
return
执行update_folder_value()函数后,self.select_folder_btn保持不变。
答案 0 :(得分:1)
首先是将来参考,这是一个最小的工作示例:
from Tkinter import *
import tkFileDialog as filedialog
class app:
def __init__(self):
self.top = Tk()
self.select_folder_btn = Button(self.top)
self.select_folder_btn.place(relx=0.07, rely=0.57, height=34, width=187)
self.select_folder_btn.configure(activebackground="#d9d9d9")
self.select_folder_btn.configure(activeforeground="#000000")
self.select_folder_btn.configure(background="#d9d9d9")
self.select_folder_btn.configure(disabledforeground="#a3a3a3")
#self.select_folder_btn.configure(font=self.font3)
self.select_folder_btn.configure(foreground="#000000")
self.select_folder_btn.configure(highlightbackground="#d9d9d9")
self.select_folder_btn.configure(highlightcolor="black")
self.select_folder_btn.configure(pady="0")
self.select_folder_btn.configure(text='''Select destination folder''')
self.select_folder_btn.configure(command=self.update_folder_value)
self.sel_folder_val = {}
self.top.mainloop()
def update_folder_value(self):
self.sel_folder_val['text']=filedialog.askdirectory()
self.top.update_idletasks()
app()
甚至那不是最小的。其次你的问题很难找到,因为这不是最小的 - 你正在做的事情真的很奇怪 - 将按钮绑定到点击。你正在覆盖内置绑定,显然它仍会影响按下按钮的状态,但不会返回。你想要的是:
self.select_folder_btn.configure(command=self.update_folder_value)
而不是你的:
self.select_folder_btn.bind('<Button-1>',self.update_folder_value)
您也可以在Button
命令中定义它。你做的是绕过按钮机制,所以显然只有一半被执行,并且没有提升浮雕。请注意,您必须删除方法接受的事件参数。
答案 1 :(得分:1)
我使用了命令:
self.select_folder_btn.configure(command=self.update_folder_value)
而不是绑定:
self.select_folder_btn.bind('<Button-1>',self.update_folder_value)
它解决了我的问题。 感谢