Форум сайта python.su
Хочу разобраться с возможностями Tkinter, и не нашёл информации, примеров по работе с Combobox, например:
*1. получить позицию пункта
*2. получить текст пункта
3. удалить пункт
4. вставить пункт
*5. событие при выборе.
Удалось только получить индекс пункта
#!/usr/bin/python # coding: utf8 import Tkinter from ttk import * def _Btn(param): print (param) def main(): hWin = Tkinter.Tk() hWin.title(u'Моя программа') hWin.geometry('300x100+300+200') # ширина=500, высота=400, x=300, y=200 frameBtn = Frame(hWin) frameBtn.grid() frame = Frame(hWin) frame.grid() list1 = [u"Один",u"Два",u"Три"] # ссылка на описание параметров: https://docs.python.org/2/library/ttk.html#combobox combobox = Combobox(frame,values = list1,height=3, style='Kim.TButton', foreground='#FF0000',state='readonly') # combobox = Combobox(frame,values = list1,height=3) #frame - задает родительский виджет, на его территории будет располагаться Combobox #values - задает набор значений, которые будут содержаться в Combobox изначально #height - задает высоту выпадающего списка. Если число элементов списка меньше 11, то можно не задавать. #Если не задано при колличестве элементов больше 10, то с правой стороны появится полоса прокрутки. #Если в нашем примере задать значение height меньше трех, то с правой стороны появится полоса прокрутки, #но она будет недоступна, а все элементы будут отображаться одновременно. combobox.set(u"Один") # Пункт по умолчанию combobox.grid(column=0,row=0)#Позиционируем Combobox на форме (,sticky='s' здесь n, e, s, и/или w) #~ combobox["<<ComboboxSelected>>"] = lambda: _Btn(combobox.get()) # Привязка события при выборе def Get_Selected(param): print combobox.get() combobox.bind('<<ComboboxSelected>>', Get_Selected) button = Tkinter.Button(frameBtn, text=u"-- Моя кнопка --") # создаём кнопку button["command"] = lambda: _Btn(combobox.current()) button.pack() hWin.mainloop() if __name__ == '__main__': main()
Отредактировано AZJIO (Сен. 1, 2014 01:32:25)
Офлайн
Все очень просто
1. current.
2. Связываете с StringVar параметр textvariable, потом get получаете текст в пункте. Хотя я просто беру по позиции.
3 и 4. Тут вообще все просто. Меняются целиком все пункты через параметр values. Можете сделать атрибут класса, где хранить возможные значения, по нему проходить remove или pop и присваивать полученный результат параметру values.
5. У Вас в коде есть ответ
P.S. Combobox это не Tkinter, а ttk
Отредактировано 4kpt_II (Сен. 1, 2014 10:16:37)
Офлайн