所以,我现在在用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)
检查按钮选项,现在是功能。
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?")
是应该让复选按钮在点击时运行函数,还是我把它弄糊涂了? 总之,希望有人能帮助我。
回答你的具体问题,是的,当你点击选中按钮时,函数会被调用。
你应该调用 add_command
而非 add_checkbutton
菜单上的功能。在菜单中使用复选按钮来调用函数是非常不寻常的,很可能会让你的用户感到困惑。
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()