Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使Tkinter.Button对这两者都有响应<;回报>;同时点击一个按钮?_Python_Tkinter - Fatal编程技术网

Python 如何使Tkinter.Button对这两者都有响应<;回报>;同时点击一个按钮?

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

问题

我正在编写一个非常基本的GUI,用于使用python API向sqlite3数据库发出sql命令。GUI的功能包括
加载数据库
按钮、显示数据库路径的输入小部件、
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):
简单有效。谢谢请随意发布答案,我会接受的。