1、ComboBox的基础属性
# -*- encoding=utf-8 -*-
import tkinter
from tkinter import *
from tkinter import ttk
if __name__ == '__main__':
win = tkinter.Tk() # 窗口
win.title('南风丶轻语') # 标题
screenwidth = win.winfo_screenwidth() # 屏幕宽度
screenheight = win.winfo_screenheight() # 屏幕高度
width = 600
height = 500
x = int((screenwidth - width) / 2)
y = int((screenheight - height) / 2)
win.geometry('{}x{}+{}+{}'.format(width, height, x, y)) # 大小以及位置
value = StringVar()
value.set('CCC')
values = ['AAA', 'BBB', 'CCC', 'DDD']
combobox = ttk.Combobox(
master=win, # 父容器
height=10, # 高度,下拉显示的条目数量
width=20, # 宽度
state='readonly', # 设置状态 normal(可选可输入)、readonly(只可选)、 disabled
cursor='arrow', # 鼠标移动时样式 arrow, circle, cross, plus...
font=('', 20), # 字体
textvariable=value, # 通过StringVar设置可改变的值
values=values, # 设置下拉框的选项
)
print(combobox.keys()) # 可以查看支持的参数
combobox.pack()
win.mainloop()
2、绑定选中事件
# -*- encoding=utf-8 -*-
import tkinter
from tkinter import *
from tkinter import ttk
def choose(event):
# 选中事件
print('选中的数据:{}'.format(combobox.get()))
print('value的值:{}'.format(value.get()))
if __name__ == '__main__':
win = tkinter.Tk() # 窗口
win.title('南风丶轻语') # 标题
screenwidth = win.winfo_screenwidth() # 屏幕宽度
screenheight = win.winfo_screenheight() # 屏幕高度
width = 600
height = 500
x = int((screenwidth - width) / 2)
y = int((screenheight - height) / 2)
win.geometry('{}x{}+{}+{}'.format(width, height, x, y)) # 大小以及位置
value = StringVar()
value.set('CCC') # 默认选中CCC==combobox.current(2)
values = ['AAA', 'BBB', 'CCC', 'DDD']
combobox = ttk.Combobox(
master=win, # 父容器
height=10, # 高度,下拉显示的条目数量
width=20, # 宽度
state='normal', # 设置状态 normal(可选可输入)、readonly(只可选)、 disabled
cursor='arrow', # 鼠标移动时样式 arrow, circle, cross, plus...
font=('', 20), # 字体
textvariable=value, # 通过StringVar设置可改变的值
values=values, # 设置下拉框的选项
)
combobox.bind('<<ComboboxSelected>>', choose)
print(combobox.keys()) # 可以查看支持的参数
combobox.pack()
win.mainloop()
3、省市联动(选中第一个下拉框,自动改变第二个下拉框的值)
from tkinter import StringVar
from tkinter import Tk
from tkinter import ttk
def middle_windows(window, width=400, height=500): # 设置窗口居中
screenwidth = window.winfo_screenwidth() # 屏幕宽度
screenheight = window.winfo_screenheight() # 屏幕高度
x = int((screenwidth - width) / 2) # x轴坐标
y = int((screenheight - height) / 2) # y轴坐标
window.geometry('{}x{}+{}+{}'.format(width, height, x, y)) # 放置窗口
window.update() # 更新窗口
def choose(event):
widget = event.widget # 当前的组件
value = widget.get() # 选中的值
print('value:{}'.format(value))
if value == 'AAA':
value2.set('') # 设置默认是空串
combobox2.configure(values=['AAA1', 'AAA2', 'AAA3']) # 重新设置combobox2可下拉的值
elif value == 'BBB':
value2.set('') # 设置默认是空串
combobox2.configure(values=['BBB1', 'BBB2', 'BBB3']) # 重新设置combobox2可下拉的值
else:
value2.set('') # 设置默认是空串
combobox2.configure(values=[]) # 重新设置combobox2可下拉的值
if __name__ == '__main__':
win = Tk()
middle_windows(win)
values1 = ['', 'AAA', 'BBB']
value1 = StringVar(win)
value1.set(values1[0])
combobox1 = ttk.Combobox(
master=win, # 父容器
height=10, # 高度,下拉显示的条目数量
width=20, # 宽度
state='readonly', # 设置状态 normal(可选可输入)、readonly(只可选)、 disabled
cursor='arrow', # 鼠标移动时样式 arrow, circle, cross, plus...
font=('', 16), # 字体
textvariable=value1, # 通过StringVar设置可改变的值
values=values1, # 设置下拉框的选项
background='pink',
)
print(combobox1.keys()) # 可以查看支持的参数
combobox1.bind('<<ComboboxSelected>>', choose) # 绑定选中事件
combobox1.pack(pady=(50, 0))
value2 = StringVar(win)
value2.set('')
combobox2 = ttk.Combobox(
master=win, # 父容器
height=10, # 高度,下拉显示的条目数量
width=20, # 宽度
state='readonly', # 设置状态 normal(可选可输入)、readonly(只可选)、 disabled
cursor='arrow', # 鼠标移动时样式 arrow, circle, cross, plus...
font=('', 16), # 字体
textvariable=value2, # 通过StringVar设置可改变的值
)
combobox2.pack(pady=(100, 0))
win.mainloop()
运行