python listbox 事件_python - python tkinter listbox事件绑定 - 堆栈内存溢出

我在获取事件绑定以使用python / tkinter时遇到麻烦。 我只是试图单击并打印出位置,但是每次这样做,结果都是“ -1”。

这是我的代码

from Tkinter import *

import Tkinter

class make_list(Tkinter.Listbox):

def __init__(self,master, **kw):

frame = Frame(master)

frame.pack()

self.build_main_window(frame)

kw['selectmode'] = Tkinter.SINGLE

Tkinter.Listbox.__init__(self, master, kw)

master.bind('', self.click_button)

master.curIndex = None

#display the clicked location

def click_button(self, event):

self.curIndex = self.nearest(event.x)

print self.curIndex

#display the window, calls the listbox

def build_main_window(self, frame):

self.build_listbox(frame)

#listbox

def build_listbox(self, frame):

listbox = Listbox(frame)

for item in ["one", "two", "three", "four"]:

listbox.insert(END, item)

listbox.insert(END, "a list entry")

listbox.pack()

return

if __name__ == '__main__':

tk = Tkinter.Tk()

make_list(tk)

tk.mainloop()

更新的代码-我摆脱了框架,但是似乎无法弄清楚为什么我在click_button函数的第一个打印语句中得到-1

from Tkinter import *

import Tkinter

class make_list(Tkinter.Listbox):

#display the clicked location

def click_button(self, event):

##this block works

w = event.widget

index = int(w.curselection()[0])

value = w.get(index)

print value

##this doesn't

self.curIndex = self.nearest(event.y)

print self.curIndex

self.curIndex = event.widget.nearest(event.y)

print self.curIndex

#display the window, calls the listbox

def build_main_window(self):

self.build_listbox()

#listbox

def build_listbox(self):

listbox = Listbox()

listbox.bind('<>', self.click_button)

for item in ["one", "two", "three", "four"]:

listbox.insert(END, item)

listbox.insert(END, "a list entry")

listbox.pack()

return

if __name__ == '__main__':

tk = Tkinter.Tk()

start = make_list(tk)

start.build_main_window()

start.mainloop()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值