#python #user-interface #tkinter
#питон #пользовательский интерфейс #tkinter
Вопрос:
помогите! Я работал над этим простым графическим интерфейсом в течение нескольких дней и просто не могу понять, как заставить его работать. Я пытаюсь нажать кнопку «ДА», чтобы открыть новое окно, в котором затем запускается база данных sql, созданная позже в коде. Я не могу заставить базу данных работать в новом окне (вверху).
from tkinter import* import sqlite3 import typing root = Tk() root.title('You are invited!') root.option_add('*Font', 'Times 24') root['bg'] = '#49A' frame = LabelFrame top = Toplevel() def myClick_No(): myLabel = Label(root, text="We're sorry we won't see you there. Thanks for letting us know.",bg='#fff', fg='#f00', pady=10, padx=10, font=10) myLabel.grid(row=6, column = 0) button_quit = Button(top, text="Exit", command=root.destroy) button_quit.grid(row=2, column=5) def myClick_Yes(): top = Toplevel() top.title("We can't wait to see you!") top['bg'] = '#49A' myLabel = Label(top, text="We're so excited to see you. Please provide RSVP details *Due to current COVID restictions only 4 guest per party allowed*", fg='#fff', bg='#49A') myLabel.grid(row=1, column = 0) button_quit = Button(top, text="Exit", command=root.destroy) button_quit.grid(row=10, column=5) #create label widget (no action!) myLabel1 = Label(root, text="YOU'RE INVITED!", fg='#fff', bg='#49A') myLabel2 = Label(root, text="A NIGHT TO REMEMBER", fg='#fff', bg='#49A') myLabel3 = Label(root, text="FRIDAY, DECEMBER 24, 2021", fg='#fff', bg='#49A') myLabel4 = Label(root, text="6PM IN THE EVENING", fg='#fff', bg='#49A') #Creates a frame for the RSVP Options RSVPFrame = LabelFrame(root,text="WILL YOU ATTEND?", fg='#fff', bg='#000080', padx=15, pady=15) #layout myLabel1.grid(row=0, column=0) myLabel2.grid(row=1, column=0) myLabel3.grid(row=2, column=0) myLabel4.grid(row=3, column=0) RSVPFrame.grid(row=4, column=0) #create a button widget with action and size options, command= calls the function myButtonNo = Button(RSVPFrame, text="No", padx=10, pady=10, command=myClick_No) myButtonNo.grid(row=5, column=1) myButtonYes = Button(RSVPFrame, text="Yes", padx=10, pady=10, command=myClick_Yes) myButtonYes.grid(row=5, column=0) button_quit = Button(root, text="Exit", command=root.destroy) button_quit.grid(row=20, column=5) #create a database conn = sqlite3.connect("guest_meal_selection.db") #create cursor, commit changes c = conn.cursor() #create table '''c.execute("""CREATE TABLE guest_meal ( first_name text, last_name text, meal_choice text, )""") ''' #create submit function for database def submit(): conn = sqlite3.connect("guest_meal_selection.db") c = conn.cursor() #insert into table c.execute("""INSERT INTO guest_meal (FirstName, LastName, MealChoice) VALUES { FirstName: FirstName.get(), LastName: LastName.get(), MealChoice: MealChoice.get() })""") conn.commit() conn.close() FirstName.delete(0, END) LastName.delete(0, END) MealChoice.delete(0, END) #create Query function for event planner to pull all RSVps from database def query(): conn = sqlite3.connect("guest_meal_selection.db") c = conn.cursor() c.execute("SELECT *, oid FROM guest_meal") RSVPs = c.fetchall() print() #loop through results for RSVP in RSVPs: print_RSVPs = str(RSVP) "/n" QueryLabel = Label(top, text=print_RSVPs) Querylabel=grid(row=7, column=0) conn.commit() conn.close() #create text boxes FirstName = Entry(top, width=30) FirstName.grid(row=2, column=1, padx=20) LastName = Entry(top, width=30) LastName.grid(row=3, column=1, padx=20) MealChoice = Entry(top, width=30) MealChoice.grid(row=4, column=1, padx=20) #create text box labels FirstNameLabel = Label(top, text="First name", bg='#49A') FirstNameLabel.grid(row=2, column=0) LastNameLabel = Label(top, text="Last name", bg='#49A') LastNameLabel.grid(row=3, column=0) MealChoiceLabel = Label(top, text="Meal Choice", bg='#49A') MealChoiceLabel.grid(row=4, column=0) #create text box submit button SubmitButton = Button(top, text="Submit", command=submit) SubmitButton.grid(row=5, column=1) #create query botton QueryButton = Button(top, text=" Show RSVP List", command=query) QueryButton.grid(row=6, column=1) conn.commit() conn.close() root.mainloop()
Я просто не понимаю!
Комментарии:
1. Ваш код не удалось запустить из-за
NameError: name 'myLabel' is not defined
. Исправьте проблему с отступами в вашем коде.2. Это прекрасно работает в моем .py, когда я запускаю это. Я просто не могу запустить базу данных. Это должно быть что-то из копирования и вставки в текстовое поле, из-за чего отступ будет выключен.
3. Ваш обновленный код все еще не удалось запустить из-за
NameError: name 'top' is not defined
в строкеFirstName = Entry(top, width=30)
. Сначала попробуйте протестировать свой опубликованный код.4. Это работает для меня в режиме ожидания. Я не знаю, почему это не работает.
5. Инструкция INSERT SQL неверна. Попробуй
c.execute("INSERT INTO guest_meal (FirstName, LastName, MealChoice) VALUES (?, ?, ?)", (FirstName.get(), LastName.get(), MealChoice.get()))
.