#python #function
#python #функция
Вопрос:
Я следовал руководству по созданию приложения для входа в систему с использованием tkinter. Все шло хорошо, и я думал, что понял код, пока не попытался его запустить. По какой-то причине это говорит мне, что «register» не определен, когда он явно определен. Вот ссылка на учебник. И вот что у меня было в Visual Studio 2019.
import tkinter as tk
def main_account_screen():
main_screen = tk.Tk() #this creates the GUI window
main_screen.geometry('800x600') #this sets the window size
main_screen.title('Account LogIn') #this sets the title of the window
#this creates a Form label
tk.Label(text = 'Choose: LogIn or Register').pack()
tk.Label(text = '').pack()
#this creates the LogIn Button
tk.Button(text = 'LogIn').pack()
tk.Label(text = '').pack()
#this creates a Register Button
#add command = register in button widget
tk.Button(text = 'Register', command = register).pack()
main_screen.mainloop() #this starts the GUI
main_account_screen() #this calls the main_account_screen() function
#now you need to create a registration window
def register():
# The Toplevel widget works pretty much like a Frame,
# but it is displayed in a separate, top-level window.
#Such windows usually have title bars, borders, and other “window decorations”.
# And in the argument we have to pass the global screen variable
register_screen = tk.Toplevel(main_screen)
register_screen.title('Register')
register_screen.geometry('600x400')
#now you need to set the text variables where you'll store the data
username = StringVar()
password = StringVar()
#now you need a label that gives the user instructions
tk.Label(register_screen, text = 'Enter your detail below').pack()
tk.Label(register_screen, text = '').pack()
#now you need to set an username label
username_label = tk.Label(register_screen, text = 'Username * ')
username_label.pack()
#now it's time for the username entry
username_entry = tk.Entry(register_screen, textvariable = username)
username_entry.pack()
#now you need to set a password label
password_label = tk.Label(register_screen, text = 'Password * ')
password_label.pack
#now it's time for the password entry
password_entry = tk.Entry(register_screen, textvariable = password)
password_entry.pack()
tk.Label(register_screen, text = '').pack()
#now it's finally time for the register button
tk.Button(register_screen, text = 'Register').pack()
Как вы можете видеть, я просто отредактировал заметки, чтобы лучше понять, что мне нужно сделать (хотя это в основном то же самое, что и в руководстве). Я также попытался поместить некоторый код в функцию main_account_screen, которой в руководстве не было, и она все равно не будет работать.
Комментарии:
1. Пожалуйста, укажите полное сообщение об ошибке.
2. вам нужно перейти
main_account_screen()
после функцииregister
3. Сообщение = имя «register» не определено Источник = C: Projects Code Weather App LogIn 2.0LogIn_2.0.py StackTrace: Файл «C:ProjectsCodeWeather Приложение Вход в систему 2.0LogIn_2.0.py «, строка 23, в <module> main_account_screen() #это вызывает функцию main_account_screen() Вот полное сообщение об ошибке. @DYZ
4. Перемещение сделало свое дело. Большое спасибо! @python_learner