Я очень новичок в мире графических интерфейсов с Python и пытаюсь создать свой первый с несколькими страницами, но разделение переменной из поля ввода действительно провоцирует меня. Я понимаю, что с кодом, вероятно, что-то не так, но сейчас я действительно хотел бы лучше понять, как делить переменные между страницами из поля ввода имени пользователя.
Вот код, который связан сэто: (разрывы страниц как раз там, где есть какой-то несвязанный код)
import tkinter as tk
from tkinter import Tk, Label, Button, StringVar
class Keep(tk.Tk):
def __init__(self, *args, **kwargs):
tk.Tk.__init__(self, *args, **kwargs)
self.shared_data ={
"email": tk.StringVar(),
"password": tk.StringVar()
}
# Skipping some code to get to the good stuff
class StartPage(tk.Frame):
def __init__(self, parent, controller):
tk.Frame.__init__(self, parent)
self.controller = controller
# LABELS, ENTRIES, AND BUTTONS
# page break
self.entry1 = tk.Entry(self, textvariable=self.controller.shared_data["email"])
entry2 = tk.Entry(self, show = '*')
button1 = tk.Button(text="Submit", command=lambda: [controller.show_frame("PageTwo"), self.retrieve()])
# page break
def retrieve(self):
self.email = self.controller.shared_data["email"].get()
self.controller.email = self.email
class PageTwo(tk.Frame):
def __init__(self, parent, controller):
tk.Frame.__init__(self, parent)
self.controller = controller
self.email = self.controller.shared_data["email"].get()
label1 = tk.Label(self, text="Welcome, {}".format(self.email))
if __name__ == "__main__":
keep = Keep()
keep.mainloop()
Я знаю, что функция получения выглядит довольно странно и, вероятно, не совсем правильно, но я работала над этой конкретной проблемой дляоколо недели, и это привело меня в дикие кроличьи норы.
Конечной целью является label1
из pageTwo
для отображения «Добро пожаловать, (введите адрес электронной почты, введенный в entry1
из startPage
)».
Я думаю, что мойпроблема заключается в pageTwo
получении пустой строки из shared_data
, но я не понимаю, почему это так.
Любая помощь очень важна!