如何在Python+Tkinter中让菜单选中按钮调用函数?

问题描述 投票:1回答:3

所以,我现在在用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?")

是应该让复选按钮在点击时运行函数,还是我把它弄糊涂了? 总之,希望有人能帮助我。

python function checkbox tkinter
3个回答
1
投票

回答你的具体问题,是的,当你点击选中按钮时,函数会被调用。

你应该调用 add_command 而非 add_checkbutton 菜单上的功能。在菜单中使用复选按钮来调用函数是非常不寻常的,很可能会让你的用户感到困惑。


1
投票

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()
© www.soinside.com 2019 - 2024. All rights reserved.