2

所以,我现在正在使用 python + tkinter 进行个人项目(只是为了尝试自己)。它是一个加密器,这意味着它获取一段文本并使用一些著名的密码(如数字密码、凯撒密码等)对其进行加密。
现在,我想让用户选择保存他加密的文本,以及程序生成的加密文本。为此,我在程序菜单上创建了两个复选按钮:一个用于“保存文本”,另一个用于“保存加密文本”。我的问题是,我试图附加一个函数作为它的命令选项,所以,我猜它应该在单击该选项时运行该函数。但它没有发生。
在传递代码之前,我将解释这些功能应该做什么。
他们应该提示一个问题,询问用户他/她是否真的想创建一个包含文本和加密文本的文本文件(这不是数据库,它只是让用户能够稍后阅读文本的东西他/she 加密和加密版本,如果他/她愿意)。所以,到代码:

encryptermenu = Menu(menubar, tearoff=0)
encryptermenu.add_checkbutton(label="Save Text", variable=v, command=saveText)
encryptermenu.add_checkbutton(label="Save Encrypted Text", variable=w, command=saveEncryptedText)
menubar.add_cascade(label="Encrypter", menu=encryptermenu)

复选按钮选项,现在是功能:

def saveText():
    sdtst = messagebox.askyesno(title="Save Text", message="A .txt file will be created at the same directory as this program to save the text you decided to encrypt. Is it ok?")

def saveEncryptedText():
    sdtset = messagebox.askyesno(title="Save Encrypted Text", message="A .txt file will be created at the same directory as this program to save the encrypted text generated by this program. Is it ok?")

复选按钮真的应该在单击时运行该功能还是我只是在混淆?无论如何,希望有人能帮助我。

4

2 回答 2

2

Checkbutton Menu 绝对可以调用一个函数。这就是 checkbutton 选项的用途:)

我通常使用 2 个函数来处理来自 checkbutton 菜单的调用。

首先创建该菜单并将其分配给布尔变量

yesno = BooleanVar(root)
mymenu.add_checkbutton(label="Do this ?", variable=yesno, command=mytoggle)

那么你需要 2 个函数:1)一个回调来切换 2)一个来处理是

def mytoggle(event=None):
    val = yesno.get()
    if val:
        dosomething()
    else:
        somethingelse()
于 2013-05-05T00:24:53.540 回答
1

要回答您的具体问题,是的,当您单击复选按钮时将调用该函数。

你应该打电话add_command而不是add_checkbutton在菜单上。使用检查按钮从菜单中调用功能是非常不寻常的,并且可能会使您的用户感到困惑。

于 2013-05-04T16:10:57.150 回答