Python tkinter单击事件未处理

Python tkinter单击事件未处理,python,search,tkinter,click,Python,Search,Tkinter,Click,我在下面编写了Python tkinter脚本。 由于某些原因,单击事件没有反应:我希望在选择其他条目时单选按钮切换,但单击功能未执行。我不明白为什么不 我想装订可以吗 谁知道我做错了什么 所有细节都在代码中 import tkinter as tk import tkinter.ttk as ttk class PyExplore(ttk.Frame): def __init__(self, master = None, dataframes = None): # C

我在下面编写了Python tkinter脚本。 由于某些原因,单击事件没有反应:我希望在选择其他条目时单选按钮切换,但单击功能未执行。我不明白为什么不

我想装订可以吗

谁知道我做错了什么

所有细节都在代码中

import tkinter as tk
import tkinter.ttk as ttk

class PyExplore(ttk.Frame):
    def __init__(self, master = None, dataframes = None):
        # Construct the Frame object.
        ttk.Frame.__init__(self, master)
        # Bind click event
        self.bind('<Button-1>', self.click)
        # Place the main frame on the grid
        self.grid(sticky=tk.N+tk.S+tk.E+tk.W)
        # Store dataframes
        self.dataframes = dataframes
        # Create widgets
        self.createWidgets()

    # Callback function - Clicked somewhere
    def click(self, event):
        print(self.focus_get())

        if self.focus_get() == self.entryY:
            self.selectedVar.set('Y')
        elif self.focus_get() == self.entryX:
            self.selectedVar.set('X')

    def createWidgets(self):  
        # Get top window 
        self.top = self.winfo_toplevel()

        # Make it stretchable         
        self.top.rowconfigure(0, weight=1)
        self.top.columnconfigure(0, weight=1)

        # Make certain rows and columns stretchable
        self.rowconfigure(0, weight=1)        
        self.columnconfigure(0, weight=1)

        # Create frameSelection
        self.frameSelection = ttk.Frame(self, relief='ridge', borderwidth=4)
        # Make frameSelection stretchable
        self.frameSelection.rowconfigure(4, weight=1)
        self.frameSelection.columnconfigure(1, weight=1)

        # Y, X labels
        self.selectedVar = tk.StringVar()
        self.selectedVar.set('Y')
        self.radiobuttonY = ttk.Radiobutton(self.frameSelection, text='Y       ', variable=self.selectedVar, value='Y')
        self.radiobuttonY.grid(row=0, column=0, sticky = tk.NE + tk.SW, padx =1, pady=1)
        self.radiobuttonX = ttk.Radiobutton(self.frameSelection, text='X       ', variable=self.selectedVar, value='X')
        self.radiobuttonX.grid(row=1, column=0, sticky = tk.NE + tk.SW, padx =1, pady=1)


        # Y, X entries
        self.entryY = ttk.Entry(self.frameSelection)
        self.entryY.grid(row=0, column=1, sticky = tk.NE + tk.SW, padx =1, pady=1)
        self.entryX = ttk.Entry(self.frameSelection)
        self.entryX.grid(row=1, column=1, sticky = tk.NE + tk.SW, padx =1, pady=1)


        self.frameSelection.grid(row=0, column=0, sticky=tk.NW+tk.SE)

# Allow the class to run stand-alone.
if __name__ == "__main__":
    PyExplore().mainloop()
将tkinter作为tk导入
将tkinter.ttk导入为ttk
类PyExplore(ttk.Frame):
定义初始化(self,master=None,dataframes=None):
#构造框架对象。
ttk.Frame.\uuuuu初始化(自,主)
#绑定单击事件
self.bind(“”,self.click)
#将主框架放置在网格上
自网格(sticky=tk.N+tk.S+tk.E+tk.W)
#存储数据帧
self.dataframes=数据帧
#创建小部件
self.createWidgets()
#回调函数-在某处单击
def单击(自身,事件):
打印(self.focus\u get())
如果self.focus\u get()==self.entryY:
self.selectedVar.set('Y')
elif self.focus_get()==self.entryX:
self.selectedVar.set('X')
def createWidgets(自):
#上窗
self.top=self.winfo_toplevel()
#让它可以伸展
self.top.rowconfigure(0,权重=1)
self.top.columnconfigure(0,权重=1)
#使某些行和列可拉伸
self.rowconfigure(0,权重=1)
self.columnconfigure(0,权重=1)
#创建帧选择
self.frameSelection=ttk.Frame(self,relief='ridge',borderwidth=4)
#使框架选择可拉伸
self.frameSelection.rowconfigure(4,权重=1)
self.frameSelection.columnconfigure(1,权重=1)
#Y,X标签
self.selectedVar=tk.StringVar()
self.selectedVar.set('Y')
self.radiobuttonY=ttk.Radiobutton(self.frameSelection,text='Y',variable=self.selectedVar,value='Y')
self.radiobuttonY.grid(行=0,列=0,粘性=tk.NE+tk.SW,padx=1,pady=1)
self.radiobuttonX=ttk.Radiobutton(self.frameSelection,text='X',variable=self.selectedVar,value='X')
self.radiobuttonX.grid(行=1,列=0,粘性=tk.NE+tk.SW,padx=1,pady=1)
#Y,X条目
self.entryY=ttk.Entry(self.frameSelection)
self.entryY.grid(行=0,列=1,粘性=tk.NE+tk.SW,padx=1,pady=1)
self.entryX=ttk.Entry(self.frameSelection)
self.entryX.grid(行=1,列=1,粘性=tk.NE+tk.SW,padx=1,pady=1)
self.frameSelection.grid(行=0,列=0,粘滞=tk.NW+tk.SE)
#允许类独立运行。
如果名称=“\uuuuu main\uuuuuuuu”:
PyExplore().mainloop()
更换:

self.bind('<Button-1>', self.click)
self.bind(“”,self.click)
与:

self.bind\u all(“”,self.click)

因为单击小部件的子部件并不一定意味着父部件的焦点太明显。

这个问题太广泛,代码太多。请尝试将您的问题缩小到单个问题,并使用一个复制该问题的控件。绑定到click events不受哪个控件具有焦点的影响。@lvdp好的,谢谢您自己,还有。当代码简化后,就更容易理解了。
self.bind_all('<Button-1>', self.click)