Python tkinter之ComboBox(下拉框)

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()

运行

 

posted @ 2020-12-14 18:39  南风丶轻语  阅读(18260)  评论(1编辑  收藏  举报