我有一个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")
答案 0 :(得分:1)
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_VAR0”,而不是复选按钮的实际值