Python 如何使Tkinter.Button对这两者都有响应<;回报>;同时点击一个按钮?
问题 我正在编写一个非常基本的GUI,用于使用python API向sqlite3数据库发出sql命令。GUI的功能包括Python 如何使Tkinter.Button对这两者都有响应<;回报>;同时点击一个按钮?,python,tkinter,Python,Tkinter,问题 我正在编写一个非常基本的GUI,用于使用python API向sqlite3数据库发出sql命令。GUI的功能包括加载数据库按钮、显示数据库路径的输入小部件、SQL命令输入小部件和输入按钮。我的问题是试图将绑定到SQL条目小部件。我希望能够有选择地按下键或输入按钮,以输入处理命令。你是怎么做到的 我的代码: import Tkinter import sqlite3 import tkFileDialog class SQLCommand(Tkinter.Tk): def __i
加载数据库
按钮、显示数据库路径的输入小部件、SQL命令
输入小部件和输入按钮。我的问题是试图将
绑定到SQL条目小部件。我希望能够有选择地按下
键或输入
按钮,以输入处理命令。你是怎么做到的
我的代码:
import Tkinter
import sqlite3
import tkFileDialog
class SQLCommand(Tkinter.Tk):
def __init__(self):
Tkinter.Tk.__init__(self)
self.init_gui()
self.geometry('400x200')
self.mainloop()
def init_gui(self):
self.frameM=Tkinter.Frame(self,relief='ridge').pack(side=Tkinter.TOP)
Tkinter.Button(self.frameM,relief='ridge',text='Load Database',command=self.load).pack(side=Tkinter.TOP,fill=Tkinter.X)
self.filename_entry=Tkinter.StringVar(self)
Tkinter.Entry(self.frameM,textvariable=self.filename_entry).pack(side=Tkinter.TOP,fill=Tkinter.X)
self.frameL=Tkinter.Frame(self,relief='ridge').pack(side=Tkinter.TOP,fill=Tkinter.X)
Tkinter.Label(self.frameL,text='SQL Command:').pack(side=Tkinter.TOP,fill=Tkinter.X)#,text='Insert SQL Command').pack(Tkinter.TOP)
self.frameE=Tkinter.Frame(self,relief='ridge').pack(side=Tkinter.TOP,fill=Tkinter.X)
self.Evar=Tkinter.StringVar(self.frameE)
Tkinter.Entry(self.frameE,textvariable=self.Evar).pack(side=Tkinter.TOP,fill=Tkinter.X)
self.frameB=Tkinter.Frame(self,relief='solid').pack(side=Tkinter.TOP,fill=Tkinter.X)
self.B=Tkinter.Button(self.frameB,text='Enter',command=self.enter)
self.B.pack(side=Tkinter.TOP,fill=Tkinter.X)
self.bind('<Return>',self.enter)
def load(self):
self.database_filename=tkFileDialog.askopenfilename()
self.filename_entry.set(self.database_filename)
self.conn=DataBase(self.database_filename).conn
def enter(self,event):
with self.conn as c:
cur=c.cursor()
cur.execute(self.Evar.get())
print cur.fetchone()
导入Tkinter
导入sqlite3
导入tkFileDialog
类SQLCommand(Tkinter.Tk):
定义初始化(自):
Tkinter.Tk.\uuuuu初始化\uuuuuuuuu(自)
self.init_gui()
自几何体('400x200')
self.mainloop()
def初始图形用户界面(自身):
self.Frame=Tkinter.Frame(self,relief='ridge').pack(side=Tkinter.TOP)
按钮(self.frameM,relief='ridge',text='Load Database',command=self.Load).pack(side=Tkinter.TOP,fill=Tkinter.X)
self.filename\u entry=Tkinter.StringVar(self)
Entry(self.frameM,textvariable=self.filename\u Entry).pack(side=Tkinter.TOP,fill=Tkinter.X)
self.frameL=Tkinter.Frame(self,relief='ridge').pack(side=Tkinter.TOP,fill=Tkinter.X)
Tkinter.Label(self.frameL,text='SQL Command:').pack(side=Tkinter.TOP,fill=Tkinter.X)#,text='Insert SQL Command').pack(Tkinter.TOP)
self.Frame=Tkinter.Frame(self,relief='ridge').pack(side=Tkinter.TOP,fill=Tkinter.X)
self.Evar=Tkinter.StringVar(self.frameE)
条目(self.frameE,textvariable=self.Evar).pack(side=Tkinter.TOP,fill=Tkinter.X)
self.frameB=Tkinter.Frame(self,relief='solid').pack(side=Tkinter.TOP,fill=Tkinter.X)
self.B=Tkinter.Button(self.frameB,text='Enter',command=self.Enter)
自包装(侧面=顶部,填充=顶部)
self.bind(“”,self.enter)
def加载(自):
self.database_filename=tkFileDialog.askopenfilename()
self.filename\u entry.set(self.database\u filename)
self.conn=数据库(self.DataBase\u文件名).conn
def enter(自我,事件):
将self.conn作为c:
cur=c.cursor()
cur.execute(self.Evar.get())
print cur.fetchone()
按下返回键时的错误
但是,
Enter
按钮是完全可操作的command=self.button
执行它时没有参数作为self.Enter()
但是bind(…,self.Enter)
执行它时有一个参数作为self.Enter(event)
您可以将事件的默认值设置为同时使用这两种方法,即
def enter(self, event=None):
command=self.button
执行时不带参数,如self.enter()
但bind(…,self.enter)
执行时带一个参数,如self.enter(event)
您可以将事件的默认值设置为同时使用这两种方法,即
def enter(self, event=None):
使用None
作为默认值def enter(self,event=None):
简单有效。谢谢请随意发布答案,我会接受。使用None
作为默认值def enter(self,event=None):
简单有效。谢谢请随意发布答案,我会接受的。