Найти - Пользователи
Полная версия: Tkinter:Combobox, нужны примеры
Начало » GUI » Tkinter:Combobox, нужны примеры
1
AZJIO
Хочу разобраться с возможностями 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()
4kpt_II
Все очень просто
1. current.
2. Связываете с StringVar параметр textvariable, потом get получаете текст в пункте. Хотя я просто беру по позиции.
3 и 4. Тут вообще все просто. Меняются целиком все пункты через параметр values. Можете сделать атрибут класса, где хранить возможные значения, по нему проходить remove или pop и присваивать полученный результат параметру values.
5. У Вас в коде есть ответ

P.S. Combobox это не Tkinter, а ttk
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB