简体   繁体   English

在侧面菜单栏中使用p​​ython中的tkinter在多个帧之间切换

[英]Switch between multiple frames using tkinter in python in side menubar

I am trying to create a side menubar and use multiple labels as click buttons. 我正在尝试创建一个侧面菜单栏,并使用多个标签作为单击按钮。 But when I execute the program, only one label is clicked and event is shown in mainarea. 但是,当我执行程序时,只有一个标签被单击,事件显示在主区域中。 Other event doesn't work. 其他事件无效。

Please provide me with a useful solution. 请为我提供有用的解决方案。 Here is the code I have written: 这是我编写的代码:

    from Tkinter import *
    import ttk
    root = Tk()
    def MainScreen(self):
      label4 = Label(mainarea,width=100,height=80,text="Prapti Computer 
      Solutions")
      label4.pack(expand=True,fill='both')

   def ClientData(self):
      label4 = Label(mainarea,width=100,height=80,text="Yo this is client data")
      label4.pack(expand=True,fill='both')

   def Report(self):
      label6 = Label(mainarea,width=100,height=80,text="Report is onnnnn!")
      label6.pack(expand=True,fill='both')

   # sidebar
   sidebar = Frame(root, width=400, bg='white', height=500,  borderwidth=2)
   sidebar.pack( fill='y', side='left', anchor='nw')

   #submenus
   label1 = Label( sidebar,width=45,height = 2 , text="HOME", relief=FLAT )
   label1.bind("<Button-1>",MainScreen)
   label1.grid(row=0)

   ttk.Separator(sidebar,orient=HORIZONTAL).grid(row=1, columnspan=5)

   label2 = Label( sidebar,width=45,height = 2 , text="CLIENT", relief=FLAT )
   label2.bind("<Button-1>",ClientData)
   label2.grid(row=2)

   ttk.Separator(sidebar,orient=HORIZONTAL).grid(row=3, columnspan=5)

   label3 = Label( sidebar,width=45,height = 2 , text="REPORT", relief=FLAT )
   label3.bind("<Button-1>",Report)
   label3.grid(row=4)

   # main content area
   mainarea = Frame(root, bg='#CCC', width=500, height=500)
   mainarea.pack(expand=True, fill='both', side='right')
   root.attributes('-alpha', 0.98)

   root.mainloop()

Thank you. 谢谢。

You keep packing things but you never remove them. 您一直在打包东西,但从未删除它们。 You need to remove the current page before switching to the new page. 您需要先删除当前页面,然后才能切换到新页面。

For example: 例如:

current_page = None

def MainScreen(self):
   global current_page
   if current_page is not None:
       current_page.pack_forget()
   label4 = Label(mainarea,width=100,height=80,text="Prapti Computer Solutions")
   label4.pack(expand=True,fill='both')
   current_page = label4

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM