当您退出 tkinter 中的入口小部件时,是否有任何函数被调用?
Is there any function that gets called when you exit an entry widget in tkinter?
我想在退出入口小部件时更改 Label 的布局。
例如:
一种。在布局状态 1 中,第一个标签显示 "Entry all the names you want",在它旁边你有一个条目小部件来获取名称的详细信息。格式就像名字的数量,名字的详细信息。例如:2,dan,brown.
b。在第一个标签下方,第二个标签名为 "Choose the config for",旁边有一个下拉菜单 window.
但是,
C。我想根据在第一个条目 window 中动态输入的详细信息将标签布局更改为 "Choose the config for dan"。
所以想知道是否有任何我们可以在条目小部件的 "EXIT" 调用的函数,它可以根据条目中提供的信息去 modify/re-create 标签 2 布局1 并将布局更改为 "Layout State 2".
更新:
我用 bind 和 FocusOut 尝试了下面的代码,但它并没有像我预期的那样做。
#!/usr/intel/bin/python2.7
import Tkinter
import Tkinter as tk
from Tkinter import *
import ttk
import Tkinter
from Tkinter import *
import subprocess
import shlex
import os
#from PIL import Image, ImageTk
#import Image, ImageTk
import time
import string
import tkFont
import ttk
global aloha_blue_frame_loop
aloha_blue_frame_loop = 1
class MyApp:
def __init__(self, parent):
self.rel3 = None
self.rel4 = None
self.rel5 = None
self.reo1 = None
self.ree3 = None
self.ree4 = None
self.ree5 = None
self.aloha_frame = None
self.aloha_name = None
self.aloha_type = None
self.aloha_name_e = []
self.aloha_type_e = []
self.aloha_choose_int_list = {}
self.aloha_choose_int_val = StringVar()
if not (self.rel4):
self.rel4 = Label(root, font=MyFontH2, text="Enter All the Names You Want: ")
self.rel4.grid(row=0, column=0, sticky='W')
self.rel4.rowconfigure(0,weight=1)
else:
self.rel4.grid()
if not (self.ree4):
self.ree4 = Entry(self.aloha_frame, font=MyFontH2)
self.ree4.grid(row=0, column=1)
self.ree4.rowconfigure(0,weight=1)
self.ree4.delete(0, END)
self.ree4.insert(0, '')
self.ree4.bind('<FocusOut>', self.ree4_entry_click)
else:
self.ree4.grid()
if not (self.rel5):
self.rel5 = Label(root, font=MyFontH2, text="Enter the details for student: ")
self.rel5.grid(row=1, column=0, sticky='W')
self.rel5.rowconfigure(1,weight=1)
else:
self.rel5.grid()
if not (self.ree5):
self.ree5 = Entry(self.aloha_frame, font=MyFontH2)
self.ree5.grid(row=1, column=1)
self.ree5.rowconfigure(1,weight=1)
else:
self.ree5.grid()
def ree4_entry_click(self, *args):
entry_values_l = (self.ree4.get()).split(",")
print "values of entry_values_l", entry_values_l
if (self.rel5):
self.rel5.grid_forget()
self.rel5 = None
if not (self.rel5):
self.rel5 = Label(root, font=MyFontH2, text="Enter the details for %s student:"%(entry_values_l[1]))
self.rel5.grid(row=1, column=0, sticky='W')
self.rel5.rowconfigure(1,weight=1)
else:
self.rel5.grid()
root = Tk()
root.title("Test UI")
MyFontH2 = tkFont.Font(family='courier', size=20, weight=tkFont.BOLD)
myapp = MyApp(root)
root.mainloop()
我原以为 Focusout 会调用绑定函数,从条目小部件中获取所需的值,并 edit/change 第二个标签的值,但它没有这样做。我在这里犯了什么错误吗?
尝试:
widget.bind('<FocusOut>', callback_handler)
我想在退出入口小部件时更改 Label 的布局。
例如: 一种。在布局状态 1 中,第一个标签显示 "Entry all the names you want",在它旁边你有一个条目小部件来获取名称的详细信息。格式就像名字的数量,名字的详细信息。例如:2,dan,brown.
b。在第一个标签下方,第二个标签名为 "Choose the config for",旁边有一个下拉菜单 window.
但是, C。我想根据在第一个条目 window 中动态输入的详细信息将标签布局更改为 "Choose the config for dan"。
所以想知道是否有任何我们可以在条目小部件的 "EXIT" 调用的函数,它可以根据条目中提供的信息去 modify/re-create 标签 2 布局1 并将布局更改为 "Layout State 2".
更新: 我用 bind 和 FocusOut 尝试了下面的代码,但它并没有像我预期的那样做。
#!/usr/intel/bin/python2.7
import Tkinter
import Tkinter as tk
from Tkinter import *
import ttk
import Tkinter
from Tkinter import *
import subprocess
import shlex
import os
#from PIL import Image, ImageTk
#import Image, ImageTk
import time
import string
import tkFont
import ttk
global aloha_blue_frame_loop
aloha_blue_frame_loop = 1
class MyApp:
def __init__(self, parent):
self.rel3 = None
self.rel4 = None
self.rel5 = None
self.reo1 = None
self.ree3 = None
self.ree4 = None
self.ree5 = None
self.aloha_frame = None
self.aloha_name = None
self.aloha_type = None
self.aloha_name_e = []
self.aloha_type_e = []
self.aloha_choose_int_list = {}
self.aloha_choose_int_val = StringVar()
if not (self.rel4):
self.rel4 = Label(root, font=MyFontH2, text="Enter All the Names You Want: ")
self.rel4.grid(row=0, column=0, sticky='W')
self.rel4.rowconfigure(0,weight=1)
else:
self.rel4.grid()
if not (self.ree4):
self.ree4 = Entry(self.aloha_frame, font=MyFontH2)
self.ree4.grid(row=0, column=1)
self.ree4.rowconfigure(0,weight=1)
self.ree4.delete(0, END)
self.ree4.insert(0, '')
self.ree4.bind('<FocusOut>', self.ree4_entry_click)
else:
self.ree4.grid()
if not (self.rel5):
self.rel5 = Label(root, font=MyFontH2, text="Enter the details for student: ")
self.rel5.grid(row=1, column=0, sticky='W')
self.rel5.rowconfigure(1,weight=1)
else:
self.rel5.grid()
if not (self.ree5):
self.ree5 = Entry(self.aloha_frame, font=MyFontH2)
self.ree5.grid(row=1, column=1)
self.ree5.rowconfigure(1,weight=1)
else:
self.ree5.grid()
def ree4_entry_click(self, *args):
entry_values_l = (self.ree4.get()).split(",")
print "values of entry_values_l", entry_values_l
if (self.rel5):
self.rel5.grid_forget()
self.rel5 = None
if not (self.rel5):
self.rel5 = Label(root, font=MyFontH2, text="Enter the details for %s student:"%(entry_values_l[1]))
self.rel5.grid(row=1, column=0, sticky='W')
self.rel5.rowconfigure(1,weight=1)
else:
self.rel5.grid()
root = Tk()
root.title("Test UI")
MyFontH2 = tkFont.Font(family='courier', size=20, weight=tkFont.BOLD)
myapp = MyApp(root)
root.mainloop()
我原以为 Focusout 会调用绑定函数,从条目小部件中获取所需的值,并 edit/change 第二个标签的值,但它没有这样做。我在这里犯了什么错误吗?
尝试:
widget.bind('<FocusOut>', callback_handler)