我可以使用tk.Checkbutton将变量添加到元组中吗?

2024-06-17 09:45:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个python脚本来按扩展名删除文件(即删除以.com.html等结尾的所有文件)。目前,我有一个元组,用户必须注释掉或删除他或她不想删除的文件。例如,如果他们想保留.com文件,他们必须在我的脚本中注释它。我想用tkinter创建一个GUI,允许用户检查要删除的扩展

我的目标是将选中的变量放入一个元组,在元组中我可以使用.endswith()命令os.remove()以元组中列出的扩展名结尾的文件

没有GUI,这很容易,因为我只是在一系列str字符串中定义元组。我只能说:

Files_to_Delete = (".com", ".html")

但是在尝试使用tk.Checkbutton()时,我得到了一个错误:

endswith的元组只能包含str,不能包含StringVar

我想我在如何解决这个问题上脑子出了问题。我的按钮定义如下:

V1 = tk.StringVar()
c1=tk.Checkbutton(root, text=".com", variable=V1, onvalue=".com")

Tags: 文件用户脚本com定义html结尾gui
1条回答
网友
1楼 · 发布于 2024-06-17 09:45:56

如果要查找值被设置为什么,那么tkinter变量必须调用它们的.get()方法。这里有一个例子,你可以乱来。我更喜欢用OOP制作gui,希望这不会让你困惑

import tkinter as tk


class OOP:
    def __init__(self):
        self.win = tk.Tk()
        self.com = tk.StringVar()
        self.create_widgets()

    def print_value(self):
        print(self.com)
        print(self.com.get())

    def create_widgets(self):
        tk.Checkbutton(self.win, text=".com", variable=self.com, onvalue=".com").pack()
        tk.Button(self.win, text="Print value", command=self.print_value).pack()


app = OOP()
app.win.mainloop()

如果您想将变量初始化为某个值,或者只是在执行期间更改它的值,那么您也可以调用V1.set(".com")self.com.set())!这个例子显示,如果省略.get(),您将得到一些奇怪的输出,比如“PY\u VAR0”,而不是checkbutton的实际值

相关问题 更多 >