使用tkinter单击按钮时加载新的框架/窗口

时间:2017-10-28 20:08:15

标签: python tkinter

我一直在制作一个tkinter程序,我必须在点击按钮的同时加载新的框架/窗口

from tkinter import *
import os
import tkinter.messagebox as tm

t=Tk()
t.title('Gym Management')
t["bg"]="black"

#declaration of frame
top=Frame(t)
top.grid(row=0,columnspan=2)
left=Frame(t)
left.grid(row=1,column=0)
right=Frame(t,bg="black")
right.grid(row=1,column=1)

#top frame
l1=Label(top,text="Silver`s Gym",fg="yellow",bg="black",font="impact 50 bold",pady=30)
l1.grid(sticky=E)

#left frame
img1=PhotoImage(file="1.png")
i1=Label(left,image=img1,padx=10)
i1.grid(row=0,column=0,sticky=E)

#right frame
l2=Label(right,text="USERNAME",fg="white",bg="black",padx=10,width=10)
l2.grid(row=0,column=0)
l3=Label(right,text="PASSWORD",fg="white",bg="black",padx=10,width=10)
l3.grid(row=1,column=0)
e2=Entry(right)
e2.grid(row=0,column=1)
e3=Entry(right,show="*")
e3.grid(row=1,column=1)
checkbox = Checkbutton(right, text="Keep me logged in",fg="white",bg="black")
checkbox.grid(columnspan=2)

# defining login button
def login_btn_clickked():
        enter code here`#print("Clicked")
        username = e2.get()
        password = e3.get()

        #print(username, password)

        if username == "john" and password == "password":
            tm.showinfo("Login info", "Welcome John")
        else:
            tm.showerror("Login error", "Incorrect username")
#defining signup button
def sugnup_btn_clickked():
    filename = 'test.py'
    os.system(filename) #Open file [Same as Right-click Open]
    os.system('notepad '+filename)

logbtn = Button(right, text="Login", command = login_btn_clickked,width=15,padx=2)
logbtn.grid(row=3,column=0)
signup = Button(right, text="sign up", command = sugnup_btn_clickked,width=15,padx=2)
signup.grid(row=3,column=1)
t.mainloop()

我应该添加什么呢? 我还没有学习tk的概念,所以请按照我的方式解释它

1 个答案:

答案 0 :(得分:0)

在谈论tkinter时,请使用 frame window 这个词时非常非常小心。

他们非常,非常非常彼此不同。

tkinter中的

Frame小部件本质上就是“盒子”。你可以将它们用于将不同的小部件分隔到它们自己的容器中的窗口类似(尽管不完全相同){{{ 1}}在HTML中工作。

tkinter div窗口和Tk()窗口小部件中有两种不同类型的“窗口”。

关键区别在于您不应该有多个Toplevel窗口 this answer解释为什么会出现这种情况。另一方面,Tk()小部件可以随时随地使用,只要您的应用程序需要多个窗口,就应该用作“额外的窗口”。

以下脚本显示了如何使用按钮创建ToplevelFrame s,其中新的Toplevel小部件只是空的红色方块和新的Frame小部件只是空窗口

Toplevel