但单击按钮后,它会立即在Ubuntu上更改。在Mac上,当鼠标移出根窗口时,它会发生变化。
顺便说一下,msg框在Ubuntu的根窗口中居中,它按照预期在Mac的屏幕中居中。
#coding=utf8
import Tkinter as tk
import tkMessageBox as mb
class App(object):
def __init__(self):
self.root = tk.Tk()
self.root.title('Root')
self.root.geometry("500x500")
self.frame = tk.Frame(self.root)
self.set_var()
self.content.pack()
self.button.pack()
self.frame.pack()
def set_var(self):
self.var = tk.StringVar(value="hello")
self.content = tk.Label(self.frame, textvariable=self.var)
self.button = tk.Button(self.frame, text='Show', command=self.var_change)
def var_change(self):
self.var.set("world")
mb.showinfo("Title", "Hi", parent=None)
self.var.set("hello")
def main():
app = App()
app.root.mainloop()
if __name__ == '__main__':
main()
答案 0 :(得分:1)
更改标签后添加对update_idletasks
的调用 - 它会强制应用程序完成所有等待任务,然后再继续:
def var_change(self):
self.var.set("world")
self.root.update_idletasks() # This forces the window to update
mb.showinfo("Title", "Hi", parent=None)
self.var.set("hello")