Я настраиваю страницу входа, которая связана с базой данных SQLite. То, что я пытаюсь сделать, это получить и проверить запись из записей UserNameBox и PasswordBox. Оттуда я хочу передать значения в подпрограмму, которая будет проверять из подключенной базы данных SQL (используя SQLite), чтобы увидеть, являются ли значения действительными. Проблема в том, что я не могу найти способ / учебник для получения значений, введенных в поле ввода.
Из того, что я уже знаю / узнал, вы должны использовать функцию .get для получения значений из виджета ввода, но я не знаю, как передать значения из виджетов в подпрограмму для проверки.
import tkinter as tk
import os
import sqlite3
LARGE_FONT = ("Courier", 20)
SMALL_FONT = ("Courier", 10)
class Frame(tk.Tk):
def __init__(self, *args, **kwargs):
tk.Tk.__init__(self, *args, **kwargs)
MainFrame = tk.Frame(self)
MainFrame.pack(side="top", fill="both", expand =True)
MainFrame.grid_rowconfigure(0, weight=1)
MainFrame.grid_columnconfigure(0, weight=1)
self.frames = {}
for F in (LoginPageGUI, QuitGUI):
frame = F(MainFrame, self)
self.frames[F] = frame
frame.grid(row=0, column=0, sticky="nsew")
self.show_frame(LoginPageGUI)
def show_frame(self, cont):
frame = self.frames[cont]
frame.tkraise()
def xD(StringToPrint):
print(StringToPrint)
class LoginPageGUI(tk.Frame):
def __init__(self, parent, controller):
tk.Frame.__init__(self, parent)
LoginPageTitle = tk.Label(self, text="Login Page", font=LARGE_FONT)
LoginPageTitle.pack(padx=10, pady=10)
UserNameTitle = tk.Label(self, text="UserName", font=SMALL_FONT)
UserNameTitle.pack()
UserNameBox = tk.Entry(self, bd=7, fg="Black")
UserNameBox.pack()
PasswordTitle = tk.Label(self, text="Password", font=SMALL_FONT)
PasswordTitle.pack()
PasswordBox = tk.Entry(self, bd=7, fg="Black")
PasswordBox.pack()
EnterButton = tk.Button(self, text="Enter", fg="black",
command=lambda: os.system('python Reaction_Testing_GUI_version_2.py'))
EnterButton.pack()
MakeNewAccountButton = tk.Button(self, text="Make a new account", fg="black",
command=lambda: controller.show_frame(NewAccountPage))
MakeNewAccountButton.pack()
QuitButton = tk.Button(self, text="Quit", fg="red",
command=lambda: controller.show_frame(QuitGUI))
QuitButton.pack()
class NewAccountpage(tk.Frame):
def __init__(self, parent, controller):
tk.Frame.__init__(self, parent)
NewAccountTitle = tk.Label(self, text="Make a new Account", font=LARGE_FONT)
NewAccountTitle.pack(padx=10, pady=10)
UserNameTitle = tk.Label(self, text="UserName", font=SMALL_FONT)
UserNameTitle.pack()
UserName = UserNameTitle.get()
UserNameBox = tk.Entry(self, bd=7, fg="Black")
UserNameBox.pack()
PasswordTitle = tk.Label(self, text="Password", font=SMALL_FONT)
PasswordTitle.pack()
PasswordBox = tk.Entry(self, bd=7, fg="Black")
PasswordBox.pack()
EnterButton = tk.Button(self, text="Enter", fg="black",
command=lambda: Create_New_Account())
EnterButton.pack()
MakeNewAccountButton = tk.Button(self, text="Make a new account", fg="black",
command=lambda: controller.show_frame(NewAccountPage))
MakeNewAccountButton.pack()
QuitButton = tk.Button(self, text="Quit", fg="red",
command=lambda: controller.show_frame(QuitGUI))
QuitButton.pack()
class QuitGUI(tk.Frame):
def __init__(self, parent, controller):
tk.Frame.__init__(self, parent)
QuitTitle = tk.Label(self, text="Are You Sure You Want To Quit?", font=LARGE_FONT)
QuitTitle.pack(pady=10, padx=10)
YesButton = tk.Button(self, text="Yes", fg="black",
command=lambda: xD("xD it works"))
YesButton.pack()
GoBackButton = tk.Button(self, text="Go back to main page", fg="black",
command=lambda: controller.show_frame(LoginGUI))
GoBackButton.pack()
def check_Username():
with sqlite3.connect('Database_Version_1.db') as db:
Cursor = db.cursor()
for name in(UserNameBox):
Cursor.execute("SELECT Username FROM User WHERE Username = ?"(UserNameBox))
exist = Cursor.fetchall()
if len(exist)==0:
print("There is no component named %s"%name)
else:
print()
LoginGUI = Frame()
LoginGUI.mainloop()
Я хочу, чтобы я мог передавать значения из записей UserNameBox и PasswordBox, когда я нажимаю EnterButton, значения передаются в подпрограмму, где проверяются имя пользователя и пароль. Пожалуйста, помогите спасибо.