如何从 tkinter 中的回调函数传递调用值

how to pass call value from callback function in tkinter

我写这段代码,我想使用

的值
class saveselectvalue():
    def docallback(self , *args):
    value = combo.get()
    return value

root=tk.Tk()

root.title('Testing Tkinter Combobox With Sqllite')
root.geometry('500x600+150+80')

frame1 =tk.Frame(root, width=500, height=75, background="blue")
frame1.pack_propagate(False)
frame1.pack()

frame2 =tk.Frame(root, width=500, height=90, background="blue")
frame2.pack_propagate(False)
frame2.place(x=0 , y=77)

frame3 =tk.Frame(root, width=500, height=180, background="white")
frame3.pack_propagate(False)
frame3.place(x=0 , y=170)

combo=ttk.Combobox(frame1,width=15 , height=10 )
combo.place(x=300 , y=8)
df=sqltablename()
combo['values']=df.to_string(header=None , index=False)
valueselected=combo.bind("<<ComboboxSelected>>", saveselectvalue.docallback)
...
...
tree=ttk.Treeview(frame3)
tree.place(x=10 , y =0)
root.mainloop()

我想选择在组合框中选择的数据,并使用它从 sqlite 数据库中查询,如下面的代码

con=sqlite3.connect('foo.db')
c = con.cursor()
d=combobbox selected value
df = pd.read_sql_query("SELECT * FROM  {};".format(d),con)

有人可以帮我做这件事吗? 最好的问候

您需要存储此值,一种方法是在您的 class SaveSelectValue:

中创建一个属性
class SaveSelectValue():
  def __init__(self):
    self.value = None 

然后你的回调必须保存值:

def docallback(self , *args):
  value = combo.get()
  self.value = value

要绑定回调,首先创建一个 class 的实例,然后用它来绑定:

instanceSaveSelectValue = SaveSelectValue()
combo.bind("<<ComboboxSelected>>", instanceSaveSelectValue.docallback)

现在你可以随意使用属性了:

print(instanceSaveSelectValue.value)