gpt4 book ai didi

Python、Tk 和 OptionMenu : how to sort a drop down list?

转载 作者:太空宇宙 更新时间:2023-11-04 08:47:56 25 4
gpt4 key购买 nike

我想用 tk 和 OptionMenu 创建一个下拉列表。我想向用户显示一个字符串(“10 us”、“40 us”...)并返回一个数字(0、1、...),这是我发送给变量的参数。它运作良好,但未排序。我想像变量“lst1”一样对列表进行排序。

enter image description here

应该是:

  • 10 我们
  • 20 我们
  • 40 我们
  • 80 秒

    lst1 = {"10 us": 0,
    "20 us": 1,
    "40 us": 2,
    "80 us": 3,
    "160 us": 4,
    "320 us": 5,
    "640 us": 6,
    "1.28 ms": 7,
    "2.56 ms": 8,
    "5.12 ms": 9,
    "10.24 ms": 10}
    var_tc = StringVar()
    var_tc.set("40 us")
    list_tc = OptionMenu(frame, var_tc, *lst1.keys())
    list_tc.config(takefocus=1)
    list_tc.grid(row=10, column=1, padx=2, pady=10)

    param.tc = lst1[var_tc.get()]

你能帮帮我吗? :)

最佳答案

问题是您将字典用作列表,而字典没有任何顺序概念。有两种方法可以做到;两者都非常简单。

方式一:只使用排序键

你不需要改变太多,只是当你传入lst1.keys()时,你改为传入sorted(lst1.keys()),因为 keys() 返回一个列表,您可以给出其中一个排序的列表。

方式二:使用保持顺序的字典

collections 是 python 标准库之一,它包含许多用途各异的容器。其中之一是 OrderedDict,它是一个保持您输入内容顺序的字典。您可以将其导入为 from collections import OrderedDict,并将其初始化为任何其他对象 - lst1 = OrderedDict([("10us",0), ("20us",1), 。 ..])

关于Python、Tk 和 OptionMenu : how to sort a drop down list?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38460590/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com