利用python ttk combobox控件制作省、市二级联动菜单

利用ttk combobox控件制作省、市二级联动菜单
数据使用已有行政区划代码EXCEL文件。该文件已上传至我的资源中。

补充:设置全局变更,方便函数传递。

import tkinter
from tkinter import ttk
import openpyxl
from openpyxl import Workbook
win = tkinter.Tk()
win.title("Kahn Software v1")  # #窗口标题
win.geometry("500x300+200+20")  # #窗口位置500后面是字母x
shengjidaima=''
shijidaima=''
a_dict= {
   }
a_list=[]
b_dict= {
   }
b_list=[]


filepath = '行政代码区划.xlsx'  # 打开已有excel数据文件
wb = openpyxl.load_workbook(filepath)
ws = wb['Sheet1']
# 表总行数
max_row = ws.max_row
# 表总列数
max_col = ws.max_column
ws2 = wb['Sheet2']
# 表总行数
max_row2 = ws2.max_row
# 表总列数
max_col2 = ws2.max_column

for x in range(1, max_row):
    cell_data = ws.cell(row=x, column=1).value #读取省级名称
    cell_id=ws.cell(row=x, column=2).value #读取省级代码
    a_dict.update({
   cell_data:cell_id}) #省级名称与代码保存入a_dict字典文件中
    a_list.append(cell_data) #省级名称保存入a_list列表文件中

'''
下拉菜单
'''
xVariable = tkinter.StringVar()  # #创建变量,便于取值

com = ttk.Combobox(win, textvariable=xVariable)  # #创建下拉菜单
com
### 实现 PythonTkinter Combobox二级联动下拉菜单 为了创建一个功能完整的Tkinter应用程序,其中包含两个相互关联的组合框(Combobox),当第一个组合框的选择改变时,第二个组合框的内容会相应更新。下面是一个简单的例子来展示这种行为。 ```python import tkinter as tk from tkinter import ttk def update_second_combobox(event=None): selected_value = first_combo.get() if selected_value == "Fruits": second_combo['values'] = ["Apple", "Banana", "Orange"] elif selected_value == "Vegetables": second_combo['values'] = ["Carrot", "Broccoli", "Spinach"] root = tk.Tk() first_label = tk.Label(root, text="Choose Category:") first_label.pack(pady=10) categories = ["Select an option", "Fruits", "Vegetables"] first_combo = ttk.Combobox(root, values=categories) first_combo.current(0) # 设置默认选项 first_combo.bind('<<ComboboxSelected>>', update_second_combobox) first_combo.pack(pady=5) second_label = tk.Label(root, text="Choose Item:") second_label.pack(pady=10) second_combo = ttk.Combobox(root) second_combo.pack(pady=5) update_second_combobox() # 初始化第二级下拉列表 root.mainloop() ``` 在这个脚本里: - 创建了一个窗口`root`并设置了两个标签用于提示用户输入。 - 定义了函数 `update_second_combobox()` 来响应第一次选择的变化,并基于此更改第二次选择的可能性[^1]。 - 使用 `ttk.Combobox` 控件作为可选项目的容器;首次选择了类别(Fruits 或 Vegetables),这将触发事件处理程序去调用 `update_second_combobox()` 函数以刷新可用项目列表。 - 初始状态下设置第一个组合框为"Select an option",并且通过调用 `update_second_combobox()` 方法确保初始状态下的子项为空白或预设值。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值