根据文本文件的行数实现动态下拉菜单

时间:2015-02-03 18:00:18

标签: python dynamic drop-down-menu tkinter

我正在尝试实现一个下拉列表,该下拉列表会根据文本文件的行数动态变化。 我可以使用以下方法找到行数:

with open('Cipher 3.5 Output.txt') as f:
    Line_Count = (sum(1 for _ in f))

我接下来要做的是让下拉列表中的每一行都有一个选项,例如,如果文件有三行,则下拉列表将包含选项1,2和3。

我正在努力实现这一点,以便在我的加密程序中,用户可以选择要读取和解密的加密文本文件的哪一行。

目前我的界面如下所示: enter image description here

我打算在Key2和Output之间添加一个标签,上面写着'选择行'或类似的东西,然后在两个输入框之间的下拉框。最后,我将在Random Key和Clear按钮之间添加一个按钮,将按行号设置为' all'并阅读整个文件。

那么,我该如何实现动态变化的下拉列表呢?感谢您的帮助。

我非常怀疑您是否需要它,但请参阅Here以了解我的其他代码。

1 个答案:

答案 0 :(得分:2)

您可以使用ttk.Combobox让用户选择一行,您可以将命令与按钮Encrypt相关联。在此命令(函数)中,您将放置计算行的代码,然后您将更新ttk.Combobox的值。如果您使用的是Python 3(我希望),您可以通过以下方式导入 ttk.Combobox

from tkinter.ttk import Combobox

组合框是 tkinter 扩展 ttk 的一部分,您明确地说要从该模块导入。

如果您使用的是Python 2,则只需从ttk:

导入即可
from ttk import Combobox

现在,假设以下是Button Encrypt的代码:

encrypt = Button(master, text='Encrypt')

然后,您可以通过以下方式将命令与按钮相关联:

encrypt = Button(master, text='Encrypt', command=on_click) # without ( )

现在,您可以定义函数on_click

def on_click():
     # calculate the lines
     # update the values of the Combobox