我正在使用TixBalloon在GUI中生成工具提示,一些Entry小部件我希望工具提示或状态消息是StringVar()变量的文本。因此代码看起来像:
from Tkinter import *
from Tix import *
root = Tk()
status = Label(root, height = 3, width=30, bd=1,bg='yellow',wraplength = 210)
status.grid(row = 0,column = 0,pady = 10)
bal = Balloon(root,statusbar = status)
frame_1 = Frame(root,relief=RIDGE,bd = 2)
frame_1.grid(row=1,column = 0)
Angles = [StringVar(),StringVar()]
Angles[0].set('0')
Angles[1].set('1')
#Incomming
label_in = Label(frame_1,text = "TH_in")
label_in.grid(row = 0,column = 0)
entry_in = Entry(frame_1, width = 20, textvariable = Angles[0])
entry_in.grid(row = 0,column = 1)
#Outgoing
label_out = Label(frame_1,text = "TH_out")
label_out.grid(row = 1,column = 0)
entry_out = Entry(frame_1, width = 20, textvariable = Angles[1])
entry_out.grid(row=1,column=1)
#tool tip / status bar
bal.bind_widget(label_in,balloonmsg='Incidence Angle',statusmsg = Angles[0].get())
bal.bind_widget(label_out,balloonmsg='Detector Angle',statusmsg = Angles[1].get())
root.mainloop()
但是,这只会在状态框中显示“Angles [0]”和“Angles [1]”的原始值,并且在更改输入框中的文本时不会更新它。
答案 0 :(得分:2)
您可以使用StringVar.trace
绑定一个回调,每当StringVar发生变化时都会调用该回调。据推测,您可以使用该回调来更改statusmsg
中的bal
(尽管我对Tix
和Balloon
一无所知,所以我可能错了)。
答案 1 :(得分:1)
气球Tix小部件是由实际的Tkinter / Tix小部件组成的 mega-widget 。
您可以通过Label
检索bal.subwidget('message')
邮件,这样您就可以在Entry
和Balloon
的{{1}}之间共享变量。
Label
但是,由于bal.subwidget('message')["textvariable"] = Angles[0]
标签在气球实例的所有工具提示之间共享,因此每个条目/工具提示对都需要一个Balloon
实例。