2017-06-12 58 views
0

我是一名Python编程初学者,我有一个问题。通过下面显示的代码,是否可以为每个类(代表不同的页面)提供一个不同的标题,而不是同时显示所有页面的标题?我到处寻找,一直未能找到答案。谢谢!需要帮助搞清楚如何标题tkinter中的不同页面创建不同,而不是所有页面具有相同的标题?

import tkinter as tk 
# from tkinter import * 
# Activate the line above when a message box is needed 


class Start(tk.Tk): 
    def __init__(self, *args, **kwargs): 
     tk.Tk.__init__(self, *args, **kwargs) 
     container = tk.Frame(self) 
     container.pack(side="top", fill="both", expand=True) 
     self.title("Application") 
     container.grid_rowconfigure(0, weight=1) 
     container.grid_columnconfigure(0, weight=1) 

     self.frames = {} 

     for F in (StartPage, PageOne): 
      # To add a new page, define the class below and then add the frame to the For Loop above 

      frame = F(container, self) 

      self.frames[F] = frame 

      frame.grid(row=0, column=0, sticky="nsew") 

     self.show_frame(StartPage) 

    def show_frame(self, controller): 
     frame = self.frames[controller] 
     frame.tkraise() 

    def get_page(self, page_class): 
     return self.frames[page_class] 
# This is the end of the baseline and the code for each page is below: 


class StartPage(tk.Frame): 

    def __init__(self, parent, controller): 
     tk.Frame.__init__(self, parent) 
     self.controller = controller 
     Name = StringVar() 
     Password = StringVar() 

     def show_credentials(event): 
      instructions = tk.Label(self, text="Credentials: ") 
      instructions.grid(row=5, column=3, sticky="E") 
      names = Name.get() 
      passwords = Password.get() 
      names = tk.Label(self, text=names, bg="red", fg="white") 
      passwords = tk.Label(self, text=passwords, bg="Red", fg="white") 
      names.grid(row=6, column=3, sticky="E") 
      passwords.grid(row=7, column=3, sticky="E") 
     credentials = tk.Button(self, text="Creds") 
     credentials.bind("<Button-1>", show_credentials) 
     credentials.grid(row=4, column=3, sticky="E") 

     def login(event): 
      controller.show_frame(PageOne) 
     log = tk.Button(self, text="Log In") 
     log.bind("<Button-1>", login) 
     log.grid(row=4, column=4, sticky="E") 
     # A class can be created to compare data entered to a list to identify the user and log him/her in 
     welcome = tk.Label(self, text="Welcome!") 
     welcome.grid(row=0, column=2, sticky="E") 
     username = tk.Label(self, text="Username: ") 
     username.grid(row=2, column=2, sticky='E') 
     password_label = tk.Label(self, text="Password: ") 
     password_label.grid(row=3, column=2, sticky="E") 
     username_entry = tk.Entry(self, textvariable=Name) 
     username_entry.grid(row=2, column=3, sticky="E") 
     password_entry = tk.Entry(self, textvariable=Password, show="*") 
     password_entry.grid(row=3, column=3, sticky="E") 
     cancel = tk.Button(self, text="Exit", command=quit) 
     cancel.grid(row=4, column=2, sticky="E") 


class PageOne(tk.Frame): 
    def __init__(self, parent, controller): 
     tk.Frame.__init__(self, parent) 
     self.controller = controller 
     label = tk.Label(self, text="This page is currently under Development") 
     label.grid(row=0, column=0, sticky="E") 
     switchpage1 = tk.Button(self, text="Back", command=lambda: controller.show_frame(StartPage)) 
     switchpage1.grid(row=1, column=0, sticky="E") 
root = Start() 
root.mainloop() 
+0

你所说的“标题”是什么意思?你是指窗口本身的标题栏吗?每当用户更改页面时,是否要更改它? –

+0

是的。它是顶部的标题,所以当用户打开页面或点击登录时,他将能够看到不同的标题,如从顶部的“登录”到“页面1”,而不是全部登录页面。 –

回答

0

这里是一个办法标题不同的窗口:

import tkinter as tk 

root = tk.Tk() 
window1 = tk.Toplevel(root) 
window1.wm_title("window 1") 

root.mainloop() 
+0

我一定会试一试!谢谢 –

相关问题