Форум сайта python.su
0
Здравствуйте! У меня небольшой вопрос, для знающих людей думаю фонарный 
Есть код:
#coding: utf-8 from Tkinter import * import ttk def button_clicked(): root2 = Tk() root2.title('n') root2.mainloop() root = Tk() root.title('Список данных') root.geometry('400x400') surname = ttk.Button(root, text=u"Фамилия", command=button_clicked) name = ttk.Button(root, text=u"Имя", command=button_clicked) patronymic = ttk.Button(root, text=u"Отчество", command=button_clicked) surname.pack() name.pack() patronymic.pack() root.mainloop()
Отредактировано theLomov (Апрель 5, 2015 05:47:59)
Офлайн
14
import Tkinter import ttk def button_clicked(event, title): root2 = tkinter.Toplevel() root2.title(title) root2.mainloop() root = tkinter.Tk() root.title('Список данных') root.geometry('400x400') surname = ttk.Button(root, text=u'Фамилия') surname.bind('<ButtonRelease-1>', lambda event: button_clicked(event, 'Фамилия')) surname.pack() name = ttk.Button(root, text=u'Имя') name.bind('<ButtonRelease-1>', lambda event: button_clicked(event, 'Имя')) name.pack() patronymic = ttk.Button(root, text=u'Отчество') patronymic.bind('<ButtonRelease-1>', lambda event: button_clicked(event, 'Отчество')) patronymic.pack() root.mainloop()
Отредактировано alex925 (Апрель 5, 2015 12:15:40)
Офлайн
39
alex925
Неа. Проще. Зачем тогда event? В том-то и соль, что в event множество информации хранится. Создавать каждую кнопку отдельно Вам должно быть лень - Вы же настоящий программист. Ну и 2 mainloop() не нужен. Точнее это не та ситуация, где он нужен. Правда если вместо bind использовать command - вот тогда нужна lambda (вариант 2)
C bind
import Tkinter import ttk # def button_clicked(event): name = event.widget["text"] root2 = tkinter.Toplevel() root2.title(name) # root = Tkinter.Tk() root.title('Список данных') root.geometry('400x400') # for name in [u'Фамилия', u'Имя', u'Отчество']: but = ttk.Button(root, text=name) but.bind('<ButtonRelease-1>', button_clicked) but.pack() # root.mainloop()
import Tkinter import ttk # def button_clicked(event, name): root2 = tkinter.Toplevel() root2.title(name) # root = Tkinter.Tk() root.title('Список данных') root.geometry('400x400') # for name in [u'Фамилия', u'Имя', u'Отчество']: ttk.Button( root, text=name, command=lambda name=name: button_clicked(name) ).pack() # root.mainloop()
Отредактировано 4kpt_III (Апрель 5, 2015 14:49:57)
Офлайн
14
4kpt_IIIДа, знаю, просто на скорую руку так накидал, да и сейчас с pyqt в основном работаю.
Зачем тогда event? В том-то и соль, что в event множество информации хранится
Офлайн