Я делаю приложение python с графическим интерфейсом Tkinter. Пока у него есть несколько динамически созданных списков, которые я свяжу всех с одной полосой прокрутки. Мне нужно, чтобы yscroll()
знал, какой список был прокручен. Передача переменной i
на yscroll()
не работает.Какой динамически созданный объект называется функцией?
from Tkinter import *
class MyApp(Tk):
def __init__(self):
Tk.__init__(self)
self.title(' - My App - ')
self.listboxes = []
for i in xrange(5):
lb = Listbox(self, yscrollcommand=lambda i, *args: self.yscroll(i, *args))
for x in xrange(30):
lb.insert('end', x)
lb.pack(fill='y', side='left')
self.listboxes.append(lb)
self.scrollbar = Scrollbar(self, orient='vertical')
self.scrollbar.pack(side='right', fill='y')
def yscroll(self, i, *args):
print i
print args
ma = MyApp()
ma.mainloop()
** TL; DR **: попробуйте 'yscrollcommand = lambda i = i, * args: ...' – jonrsharpe
ваше предложение 'yscrollcommand = lambda i = i, * args: ...' не работает, но ' lb = eval ('Listbox (self, yscrollcommand = lambda * args: ma.yscroll (% d, * args))'% i) 'делает. Есть ли более чистое решение? –
Вы смотрели, например, http://effbot.org/tkinterbook/listbox.htm? Это дает рецепт для прокрутки нескольких списков с помощью одной полосы прокрутки. – jonrsharpe