CustomTkinter项目中tkinter.IntVar报AttributeError的修复求助
修复IntVar初始化错误的问题
错误原因
你在创建tkinter.IntVar时,错误地把初始值0作为第一个参数传入:
radio_var = tkinter.IntVar(0)
tkinter.IntVar的第一个参数是父组件(master),它需要接收Tkinter窗口对象,而不是整数,这就导致程序试图调用整数的_root()方法,从而抛出AttributeError。
修复方案
有两种正确的初始化方式:
方式1:先创建IntVar,再设置初始值
radio_var = tkinter.IntVar() radio_var.set(0)
方式2:通过value参数指定初始值(可可选指定master)
radio_var = tkinter.IntVar(master=app, value=0)
这里master=app可以省略,因为程序已经创建了主窗口app,IntVar会自动关联到当前的主窗口。
修复后的完整代码
import customtkinter import tkinter from pytube import YouTube from PIL import Image customtkinter.set_appearance_mode("system") customtkinter.set_default_color_theme("blue") app = customtkinter.CTk() app.geometry("800x760") app.title("YouTube Unlocked") logo = customtkinter.CTkImage(dark_image=Image.open("G:\\ytdownloader\\assets\\icon.png"), size=(260,190)) logoDisplay = customtkinter.CTkLabel(app, text="", image=logo) logoDisplay.pack(padx=10, pady=10) linkLabel = customtkinter.CTkLabel(app, text="Video link", font=("Arial", 15)) linkLabel.pack(padx=10, pady=10) linkTextbox = customtkinter.CTkEntry(app, width=400) linkTextbox.pack(padx=10, pady=10) # 修复IntVar的初始化 radio_var = tkinter.IntVar() radio_var.set(0) radiobutton_1 = customtkinter.CTkRadioButton(app, text="Video", variable=radio_var, value=1) radiobutton_2 = customtkinter.CTkRadioButton(app, text="Audio", variable=radio_var, value=2) radiobutton_1.pack(padx=10, pady=10) radiobutton_2.pack(padx=10, pady=10) app.mainloop()
内容的提问来源于stack exchange,提问作者GP_Gamer98
相关产品推荐
相关产品推荐

