繁体   English   中英

Python,Tk和OptionMenu:如何对下拉列表进行排序?

[英]Python, Tk and OptionMenu: how to sort a drop down list?

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

在此处输入图片说明

它应该是:

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

请问你能帮帮我吗? :)

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

方法1:仅使用排序键

您不必进行太多更改,仅当您传入lst1.keys() ,而是传入sorted(lst1.keys()) ,因为keys()返回一个列表,您可以给出其中的一个排序列表。

方法2:使用保持秩序的字典

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM