rainbow-tan

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

运行

 

分类:

技术点:

相关文章: