You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 08:23:16