Принцип прост: вы выбираете состояние в первом комбо, а второй должен показать вам список всех городов выбранного штата.
Я нашел это здесь: https://stackoverflow.com/questions/172 ... optionmenu, но я не смог адаптировать его к своим потребностям
Вот как я действую:
Код: Выделить всё
import sys
import tkinter as tk
from tkinter import ttk
import mysql.connector
mydb=mysql.connector.connect(
host="myhost",
user="my_user",
passwd="my_pass",
database="erp_gir"
)
conn=mydb.cursor(buffered=True)
def listOfState():
qSallState = 'SELECT DISTINCT stateName FROM state;'
conn.execute(qSallState)
stateQR = conn.fetchall()
states = [s[0] for s in stateQR]
return states
def townOfState(*args):
qSallTownOfState = 'SELECT DISTINCT townName, stateCode FROM town as t JOIN state as s ON s.stateId = t.townState WHERE s.stateName = '+stateBox.get()+';'
conn.execute(qSallTownOfState)
townsQR = conn.fetchall()
towns = [t[0] for t in townsQR]
return towns
root = tk.Tk()
frame = ttk.Frame(root)
frame.pack()
stateSelected = tk.StringVar()
stateSelected.set("")
stateBox = ttk.Combobox(frame, textvariable=stateSelected, values=listOfState())
stateBox.grid(row=3,column=0, sticky='ew')
stateBox.current(0)
stateBox.bind("", townOfState())
townBox = ttk.Combobox(frame, textvariable='', values=townOfState())
townBox.grid(row=4,column=0, sticky='ew')
#stateSelected.trace('w',townOfState)
root.mainloop()
Ошибки:
строка 41, в
townOfState = ttk.Combobox(frame, textvariable='',values=townOfState())
строка 23, в TownOfState
conn.execute(qSallTownOfState)
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^
Подробнее здесь: https://stackoverflow.com/questions/792 ... mysql-data
Мобильная версия