====Combobox====
Виджет Combobox предназначен для отображения списка значений, их выбора или изменения пользователем. В версии tk ему подобен виджет Listbox. Разница заключается в том, что Combobox имеет возможность сворачиваться подобно свитку, а Listbox будет отображаться всегда открытым. Что бы отобразить Combobox с заранее заданными значениями в форме, достаточно сделать следующее:
import tkinter as tk
import tkinter.ttk as ttk
root = tk.Tk()
frame = tk.Frame(root)
frame.grid()
combobox = ttk.Combobox(frame,values = [u"ОДИН",u"ДВА",u"ТРИ"],height=3)
#frame - задает родительский виджет, на его территории будет располагаться Combobox
#values - задает набор значений, которые будут содержаться в Combobox изначально
#height - задает высоту выпадающего списка. Если число элементов списка меньше 11, то можно не задавать.
#Если не задано при количестве элементов больше 10, то с правой стороны появится полоса прокрутки.
#Если в нашем примере задать значение height меньше трех, то с правой стороны появится полоса прокрутки,
#но она будет недоступна, а все элементы будут отображаться одновременно.
combobox.set(u"ОДИН")#с помощью этой строчки мы установим Combobox в значение ОДИН изначально
combobox.grid(column=0,row=0)#Позиционируем Combobox на форме
root.mainloop()
{{ :python:оконное_приложение:tkinter:ttk:ttk2.png?200 |}}
Повесить событие можно с помощью метода **bind**: //select.bind("<>", choose)//
from tkinter import *
from tkinter import ttk
def setGeometry(win, winx, winy):#Функция выравнивает окно по центру
x = (root.winfo_screenwidth() / 2 - winx / 2)
y = (root.winfo_screenheight() / 2 - winy / 2)
win.geometry("%dx%d+%d+%d" % (winx, winy, x, y))
def choose(event):
print(select.current(), select.get())
root=Tk()
setGeometry(root,400, 300)
s = ttk.Style()
print('Темы: ',s.theme_names())
print('Тема по умолчанию: ',s.theme_use())
s.theme_use('vista')
s.configure('.', foreground="red")
s.configure('TButton', width=19, padding=6)
s.configure('TCombobox', width=15)
month = ['January',
'February',
'March',
'April',
'May',
'June',
'July',
'August',
'September',
'October',
'November',
'December',]
select = ttk.Combobox(root, values=month, height=3)
select.pack(pady=10)
select.current(1)
select.bind("<>", choose)
root.mainloop()
{{ :python:оконное_приложение:tkinter:ttk:ttk3.png?200 |}}