【发布时间】:2017-02-18 20:11:13
【问题描述】:
所以我有Entries,它从 CFG 文件中分配了一些值。我想在Entry 更新时修改CFG 文件,实时,没有submit 按钮;
使用<Key> 绑定将起作用,但只会采用前一个值,而不是当前值,因为最后按下的键不被视为一个值,而是一个key-press。
例如:
class EntryBox:
def __init__(self, value, option, section, grid_row, master_e):
self.section = section
self.option = option
self.box = Entry(master_e)
self.box.grid(column=0, row=grid_row)
self.serial_no = grid_row
self.box.insert(0, value)
self.box.bind("<Key>", lambda event: update_cfg(event, self, self.get_value()))
def get_value(self):
return self.box.get()
def update_cfg(evt, entry_box,new_value):
global config_file
config_file.set(entry_box.section, entry_box.option, new_value)
print "Config file modified. "+entry_box.section+" "+entry_box.option+" "+new_value
如果entry中的值为05R,当我点击entry并按6时,它将打印Config file modified. CURRENT_MEASUREMENT_EXAMPLE_HP shunt_resistance 05R;我按 7 后,它会打印Config file modified. CURRENT_MEASUREMENT_EXAMPLE_HP shunt_resistance 0R56 等等,总是在后面按一个键。更改值后实时更新它的唯一方法是按下TAB 或arrow 按钮。
【问题讨论】:
标签: python user-interface tkinter keypress tkinter-entry