【发布时间】:2025-01-14 12:05:01
【问题描述】:
我想编写两个将被堆叠的小部件的脚本,然后我会用一个键从一个切换到另一个。每个小部件都是一个Frame,包含几个Labels。到目前为止,我有以下代码(每个 Frame 只有一个 Label):
import Tkinter as tk
import ttk
import datetime
def main():
# initialize root
root = tk.Tk()
# initialize widgets
dash = Dashboard(root)
notepad = Notepad(root)
# set key actions
root.bind('<F11>', root.lift)
root.bind('<F1>', dash.raiseme)
root.bind('<F2>', notepad.raiseme)
root.mainloop()
class Dashboard(ttk.Frame):
def __init__(self, parent):
ttk.Frame.__init__(self, parent) # voodoo
self.dashframe = tk.Frame(parent)
self.labone = tk.Label(self.dashframe, text="lab1", fg='black', bg='blue')
self.labone.grid(row=0, column=0)
def raiseme(self, event):
print "raiseme dash"
self.labone.configure(text=datetime.datetime.now())
self.dashframe.lift()
class Notepad(ttk.Frame):
def __init__(self, parent):
ttk.Frame.__init__(self, parent) # also voodoo
self.noteframe = tk.Frame(parent)
self.laboneone = tk.Label(self.noteframe, text="lab11", fg='white', bg='red')
self.laboneone.grid(row=0, column=0)
def raiseme(self, event):
print "raiseme notepad"
self.laboneone.configure(text=datetime.datetime.now())
self.noteframe.lift()
if __name__ == '__main__':
main()
按F1 和F2 会到达正确的例程,但我唯一得到的是主窗口,空的。没有显示错误,所以我猜代码运行良好(只是不是 O 想要的方式:))。
可以用上面的骨架实现切换吗?
【问题讨论】:
-
看起来这里可能有一些有用的信息:[*.com/questions/11503324/… [1]:*.com/questions/11503324/…
-
@Totem:是的,我看到了这个问题(并从那里了解了
lift),但没有帮助。 -
您没有将任何一个框架放置在任何带有
pack或grid或其他任何东西的地方,所以……您希望它们出现在哪里? -
好的,我能想到的唯一可能有帮助的事情是使用 focus_set 研究可能性..
-
另外,为什么你的每个框架子类在同一个父级上创建一个 second 框架(也没有放置在任何地方),然后将标签添加到第二个框架,而不是对自己?