Я использую пример кода здесь, чтобы создать фрейм входа в систему для моего приложения (без класса).
Переключение между двумя кадрами в tkinter
В этом коде показано, что мы должны передать кадры в качестве параметров виджету, чтобы указать их кадры. Однако, когда я передаю f1 в качестве параметра ниже, метка «псевдоним» исчезает. То же самое относится и к другим элементам / виджетам на экране входа. Как я могу это исправить?
import tkinter
from tkinter import messagebox
def gantihal(frame):
frame.tkraise()
root = tkinter.Tk()
root.geometry("500x500")
f1 = tkinter.Frame(root)
f2 = tkinter.Frame(root)
for frame in (f1, f2):
frame.grid(row=0, column=0, sticky='news')
nickname_label= tkinter.Label(f1, text="Nickname:").place(x=140, y=150)
password_label = tkinter.Label(text="Password:").place(x=140, y=200)
nickname_area = tkinter.Entry()
nickname_area.place(x=210, y=150)
password_area = tkinter.Entry(show="*")
password_area. place(x=210, y=200)
def auth_login(event=None):
global nickname_area
global password_area
username = nickname_area.get()
pswd = password_area.get()
if username == "admin" and pswd == "root":
try:
gantihal(f2)
messagebox._show("Rchat v1.0.", "Welcome to RChat !")
except ConnectionRefusedError:
messagebox.showerror("Server Error", "The server is not connected.")
else:
messagebox.showerror("Wrong credentials", "Either nickname or password is wrong. Please try again.")
login_button = tkinter. Button(text="Log In" , command= auth_login, height=2, width=20)
login_button.place(x=195, y=250)
gantihal(f1)
root.mainloop()