簡體   English   中英

使用 tkinter 單擊按鈕時加載新框架/窗口

[英]load new frame/window while clicking the button with 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 的概念,所以請用我所做的方式解釋它

在談論 tkinter 時,請非常非常小心地使用單詞框架和單詞窗口

他們彼此非常非常不同。

tkinter 中的Frame小部件本質上是您將東西放入其中的“盒子”。它們可用於將不同的小部件分離到它們自己的窗口中的容器中,類似於(盡管不相同) div在 HTML 中的工作方式。

在 tkinter Tk()窗口和Toplevel小部件中有兩種不同類型的“窗口”。

關鍵的區別在於,您不應該擁有多個Tk()窗口,這個答案解釋了為什么會出現這種情況。 另一方面, Toplevel小部件可以隨時隨地使用,並且應該在您的應用程序需要多個窗口時用作“額外窗口”。

下面的腳本顯示了如何使用按鈕來創建FrameToplevel ,其中新的Frame小部件只是空的紅色方塊,而新的Toplevel小部件只是空的窗口

from tkinter import *

root = Tk()

def frame():
    Frame(root, bg="red", width=100, height=100).pack(padx=5, pady=5)

def window():
    Toplevel(root)

framebutton = Button(root, text="Frame", command=frame)
framewindow = Button(root, text="Window", command=window)

framebutton.pack()
framewindow.pack()

root.mainloop()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM