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

Implement a dynamic dropdown menu based on on the number of lines of text file

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

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

然后我要做的是让下拉菜单为文件中的每一行都有一个选项,例如,如果文件有三行,下拉菜单将有选项 1、2 和 3。

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

目前我的界面是这样的:

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

那么,如何实现动态变化的下拉菜单呢?感谢您的帮助。

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

您可以使用 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