【问题标题】:Python: TixBalloon, using a StringVar() as the messagePython:TixBalloon,使用 StringVar() 作为消息
【发布时间】:2012-11-01 15:06:26
【问题描述】:

我正在使用 TixBalloon 在 GUI 中生成工具提示,我希望工具提示或状态消息成为 StringVar() 变量的文本的一些 Entry 小部件。所以代码看起来像:

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]”的原始值,而不会在输入框中的文本更改时更新它。

【问题讨论】:

    标签: python tkinter tooltip tix


    【解决方案1】:

    您可以使用StringVar.trace 绑定一个回调,该回调将在StringVar 更改时调用。据推测,您可以使用该回调来更改bal 中的statusmsg(尽管我对TixBalloon 一无所知,所以我可能是错的)。

    【讨论】:

    • 这很有效 - 我知道你不能在实际状态消息本身上使用跟踪(你可以跟踪它,但回调无法影响实际状态消息),但是有可能让它改变绑定的消息....我去试试。
    • 它或多或少起作用了,遗憾的是它不会在您键入时强制气球更新(您必须将鼠标移开并再次移回),但我认为这是 Tix 的限制.气球比什么都重要。
    • 您可以在回调中使用bal.subwidget('message')["text"] = 之类的内容来立即更新气球标签(但是,您需要进行一些测试才能确定哪个工具提示处于活动状态)。
    【解决方案2】:

    气球 Tix 小部件是一个 mega-widget,由实际的 Tkinter/Tix 小部件组成。

    您可以通过bal.subwidget('message')检索Label消息,从而可以在EntryBalloonLabel之间共享变量。

    bal.subwidget('message')["textvariable"] = Angles[0]
    

    但是,每个条目/工具提示对都需要一个 Balloon 实例,因为 message 标签在气球实例的所有工具提示之间共享。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多