我正在尝试使用tkinter选项菜单来选择要在表中搜索的变量。然而,当传递的变量不产生任何结果时,问题就出现了。
这是table:
这里证明了sql语法是正确的。
问题是由于字符串变量不正确并返回:
[]
没有数据。
当我从选项菜单中选择一个变量时,不是得到:
jhgfds
我得到:
('jhgfds',)
所以我没有得到任何结果是可以理解的。
我曾尝试在以下方面使用这些方法:
创建非tkinter变量(streditevent) 这个
re方法 这个
[2:-3]` 方法
然而,这些都没有奏效
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()
任何帮助都将不胜感激。
打印(事件列表)
[('jhgfds',), ('uytrds',), ('sadfghjk',), ('jhytre',), ('j',), ('h',), ('q',), ('BBC',), ('BBC',), ('qwed',)]
2条答案
按热度按时间wgxvkvu91#
我终于找到答案了!要从元组中获取字符串,必须使用
map()
命令。因此
('jhgfds',)
转换为jhgfds
因此sql查询从数据库中查找数据。qlckcl4x2#
得到结果
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()