графический интерфейс python для mysql (выбор таблицы)

#python #mysql #sql #user-interface #tkinter

Вопрос:

это может показаться странным запросом, но мне нужно создать графический интерфейс, чтобы иметь возможность редактировать свою базу данных в mysql, в моей базе данных 6 таблиц, и мне нужно выбрать, какую таблицу я хочу редактировать. до сих пор я мог только понять, как создать графический интерфейс для конкретной таблицы, как я это сделал:

1.определите функции: вставка, получение, удаление, обновление:

 def insert(): id = e_id.get() sex = e_sex.get() if(id=='' or sex==''):  messagebox.showinfo('insert status', 'all fields are required!') else:  con = pymysql.connect(host='localhost', user ='root', password='ccvvbb', database ='mydb')  cursor = con.cursor()  cursor.execute("insert into sex values('"  id  "','"   sex  "')")  cursor.execute("commit")  e_id.delete(0, 'end')  e_sex.delete(0, 'end')  show()  messagebox.showinfo("insert status", "inserted successfully")  con.close()  def show():  con = pymysql.connect(host='localhost', user='root', password='ccvvbb', database='mydb')  cursor = con.cursor()  cursor.execute("select * from sex")  rows = cursor.fetchall()  list.delete(0, list.size())  for row in rows:  insertdata = str(row[0])  ' '  row[1]  list.insert(list.size() 1, insertdata)  con.close()  

то же самое для всех функций

2.создайте графический интерфейс

 root = Tk() root.geometry('500x400') id = Label(root, text='id', font=('bold', 10)) id.place(x=40, y=30) sex = Label(root, text='sex', font=('bold', 10)) sex.place(x=40, y=60) e_id = Entry() e_id.place(x=100, y=30) e_sex = Entry() e_sex.place(x=100, y=60) insert = Button(root, text = 'insert', font =('bold', 10), bg = 'gray', command = insert) insert.place (x=40, y= 120) delete = Button(root, text = 'delete', font =('bold', 10), bg = 'gray', command = delete) delete.place (x=100, y= 120) update = Button(root, text = 'update', font =('bold', 10), bg = 'gray', command = update) update.place (x=160, y= 120) get = Button(root, text = 'get', font =('bold', 10), bg = 'gray', command = get) get.place (x=220, y= 120)  

графический интерфейс для таблицы «секс»

но я не понимаю, как я могу составить выпадающий список всех моих доступных таблиц? нужно ли мне создать отдельный файл python для каждой таблицы, а затем выбрать файл, который я хочу выполнить, используя раскрывающуюся таблицу? или мне нужно определить графический интерфейс (например, root1=таблица 1, root2=таблица 2 и т. Д.), А затем каждый раз выбирать графический интерфейс для моей таблицы? каков основной способ сделать выбор таблицы (например, у каждой таблицы разные столбцы, поэтому при выборе таблицы столбцы также должны отличаться, возможно, выпадающая таблица не является лучшим решением? может быть, создание «вкладки» для каждой таблицы может быть проще реализовать?

Ответ №1:

Ответ на ваш вопрос-нет, вам не нужно определять графический интерфейс для каждой таблицы отдельно.

Я написал кое-какой код, который может быть вам полезен:

 from tkinter import *  OPTIONS = [ "Table 1", "Table 2", "Table 3" ] #etc   root = Tk() root.geometry("600x600")   def clear_frame():  """  Used to clear window   Returns:None   """  for widget in root.winfo_children():  widget.destroy()   def start_screen():  clear_frame()  variable = StringVar(root)  variable.set(OPTIONS[0]) # default value   w = OptionMenu(root, variable, *OPTIONS)  w.pack()   button_login = Button(root, height=1, width=10, text="Continue", command=lambda: picker(variable))  button_login.pack(pady=10)   def picker(var):  value = var.get()  if value == "Table 1":  first_table()  elif value == "Table 2":  test_table()  else:  print("it is else")   def first_table():  clear_frame()   label = Label(root, text="Id", font=('Courier', 15), fg='Green')  label.pack(pady=5)  id_text_box = Text(root, height=1, width=16)  id_text_box.pack(pady=5)  label = Label(root, text="Sex", font=('Courier', 15), fg='Green')  label.pack(pady=5)  sex_text_box = Text(root, height=1, width=16, fg='black', bg='white')  sex_text_box.pack(pady=5)  button_insert = Button(root, height=1, width=10, text="Insert")  button_insert.pack(pady=5)  button_delete = Button(root, height=1, width=10, text="Delete")  button_delete.pack(pady=5)  button_return = Button(root, height=1, width=10, text="Return", command=lambda: start_screen())  button_return.pack(pady=15)   def test_table():  clear_frame()   label = Label(root, text="Something", font=('Courier', 15), fg='Green')  label.pack(pady=5)  some_text_box = Text(root, height=1, width=16)  some_text_box.pack(pady=5)  label = Label(root, text="Data", font=('Courier', 15), fg='Green')  label.pack(pady=5)  data_text_box = Text(root, height=1, width=16, fg='black', bg='white')  data_text_box.pack(pady=5)  button_insert = Button(root, height=1, width=10, text="Insert")  button_insert.pack(pady=5)  button_delete = Button(root, height=1, width=10, text="Delete")  button_delete.pack(pady=5)  button_return = Button(root, height=1, width=10, text="Return", command=lambda: start_screen())  button_return.pack(pady=15)   start_screen() mainloop()