0

当我们退出条目小部件时,我想更改标签的布局。

例如:a。在布局状态 1 中,第一个标签显示“输入您想要的所有名称”,在它旁边您有一个条目小部件来获取名称的详细信息。格式就像名称的数量,名称的详细信息。例如:2,丹,棕色。

在此处输入图像描述

湾。在第一个标签下方,您有第二个名为“Choose the config for”的标签,在它旁边有一个下拉菜单窗口。

但是,c。我想根据在第一个条目窗口中输入的详细信息动态地将标签布局更改为“为 dan 选择配置”。

所以想知道我们是否可以在条目小部件的“退出”处调用任何函数,该函数可以根据条目 1 中提供的信息去修改/重新创建标签 2 布局,并将布局更改为“布局状态 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 将调用绑定函数,从条目小部件中获取所需的值并编辑/更改第二个标签的值,但它没有这样做。我在这里犯了什么错误吗?

4

1 回答 1

2

尝试:

widget.bind('<FocusOut>', callback_handler)
于 2018-08-12T19:12:22.653 回答