Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Python+;特金特?_Python_Function_Checkbox_Tkinter - Fatal编程技术网

如何在Python+;特金特?

如何在Python+;特金特?,python,function,checkbox,tkinter,Python,Function,Checkbox,Tkinter,因此,我现在正在使用python+tkinter进行一个个人项目(只是为了自己尝试)。它是一个加密机,这意味着它获取一段文本并使用一些著名的密码(如数字密码、凯撒密码等)对其进行加密。 现在,我想让用户选择保存他加密的文本,以及程序生成的加密文本。为此,我在程序菜单上创建了两个复选按钮:一个用于“保存文本”,另一个用于“保存加密文本”。我的问题是,我试图附加一个函数作为它的命令选项,因此,我想它应该在单击该选项时运行该函数。但这并没有发生。 在传递代码之前,我将解释函数应该做什么。 他们应该提示

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

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)
checkbutton选项,现在是功能:

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?")
checkbutton真的应该在单击时运行函数吗?还是我只是在制造混乱?
无论如何,希望有人能帮助我。

要回答您的具体问题,是的,当您单击checkbutton时,将调用该函数


您应该调用菜单上的
add_命令
,而不是
add_检查按钮
。使用checkbutton从菜单调用函数是非常不寻常的,可能会让用户感到困惑

Checkbutton菜单完全可以调用函数。这就是checkbutton选项的作用:)

我通常使用两个函数来处理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()

都是密码吗?是否有任何错误消息?代码对我来说似乎是正确的。除了一件事:为什么使用
add_checkbutton
而不是
add_command
?没有错误消息,唯一的问题是什么都没有发生。checkbutton选项用于创建一个可切换的菜单选项,因此当它处于活动状态时会显示勾号,而当它处于非活动状态时不会显示勾号。我决定使用它是因为我想在保存文本或加密文本时留下一个勾号,这样用户就会知道。问题是,我想要的是那些在活动时得到勾号的按钮,这样用户就可以知道它何时处于活动状态,何时不处于活动状态。但我从你的回答中了解到,我相信菜单上的复选按钮不能调用函数,对吗?无论如何,谢谢你的帮助。我决定不再提示用户了,所以我的复选按钮不需要调用函数。@AugustoQ:不,你误解了。我清楚地说,即使使用checkbutton,也应该调用该函数。不过,当我单击checkbutton选项时,什么都没有发生。它应该会提示一个消息框。我已经创建了一个调用messagebox的函数和一个单击该选项时调用的函数,但是,当我单击它时,什么也没有发生。而且,它没有显示任何错误消息或任何东西,只是没有发生。@AugustoQ:通过在每个控制行打印,您可以随时检查代码中的哪些地方被卡住了。例如,在def mytoggle中,在val=yesno.get()之后,可以打印val“print val”的值,以查看检查按钮传递给变量“val”的值