我正在尝试使用tkinter选项菜单来选择要在表中搜索的变量。但是,由于传递的变量未产生任何结果,因此出现了问题。
问题是由于字符串变量不正确并返回:
for
没有数据。
当我从OptionMenu中选择一个变量时,没有得到:
[]
我得到:
jhgfds
可以理解,我没有结果。
我尝试在:
上使用这些方法('jhgfds',)
方法re
方法但是这些都不起作用
[2:-3]
任何帮助将不胜感激。
print(EventList)
import tkinter as tk import mysql.connector root=tk.Tk() EventList=[] def OptionChanged(*args): EventSQL=("SELECT * FROM events WHERE eventname=%s") print(EditEvent.get()) StrEditEvent=EditEvent.get() print(StrEditEvent) mycursor.execute(EventSQL,(StrEditEvent,)) myresults=mycursor.fetchall() print(myresults) # Adding Tracking Variable EditEvent EditEvent = tk.StringVar() EditEvent.trace("w", OptionChanged) #Connecting To My Database mydb = mysql.connector.connect( host="localhost", user="root", passwd="Cranmore1", database="scoutsdatabase" ) print(mydb) mycursor = mydb.cursor() mycursor.execute("SELECT eventname FROM events") myresults=mycursor.fetchall() for i in myresults: EventList.append(i) EventToEditOptionMenu = tk.OptionMenu(root,EditEvent,*EventList) EventToEditOptionMenu.grid(row=1,column=1) root.mainloop()
答案 0 :(得分:1)
要以jhgfds
的形式获取结果,您需要对其进行迭代,因为它以元组[('jhgfds',), ('uytrds',), ('sadfghjk',), ('jhytre',), ('j',), ('h',), ('q',), ('BBC',), ('BBC',), ('qwed',)]
的形式返回查询的结果
您可以使用索引获取所需的特定结果result[0]
或result[2]
def OptionChanged(*args):
EventSQL=("SELECT * FROM events WHERE eventname=%s")
print(EditEvent.get())
StrEditEvent=EditEvent.get()
print(StrEditEvent)
mycursor.execute(EventSQL,(StrEditEvent,))
myresults=mycursor.fetchall()
for result in myresults: # iterate over it
print(result)
print(result[2])
print(result[5])
答案 1 :(得分:0)
我终于找到答案了!要从元组中获取字符串,必须使用map()
命令。
def OptionChanged(*args):
EventSQL=("SELECT * FROM events WHERE eventname=%s")
StrEditEvent=EditEvent.get()
start,mid,end=map(str,StrEditEvent.split("'"))
print(mid)
mycursor.execute(EventSQL,(mid,))
myresults=mycursor.fetchall()
print(myresults)
因此('jhgfds',)
被转换为jhgfds
,因此SQL查询从数据库中查找数据。