Связанное с Tkinter поле со списком, заполняемое данными MySqlPython

Программы на Python
Ответить
Anonymous
 Связанное с Tkinter поле со списком, заполняемое данными MySql

Сообщение Anonymous »

Я начинаю с Python и пытаюсь создать связанные поля со списком, заполненные данными MySql, где второй будет обновляться динамически в зависимости от того, что выбрано в первом.
Принцип прост: вы выбираете состояние в первом комбо, а второй должен показать вам список всех городов выбранного штата.
Я нашел это здесь: 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»