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

树莓派Tkinter GUI开发报错App实例无updateRed属性原因咨询

错误原因

  • 核心问题是你把updateRed、updateGreen、updateBlue三个方法定义在了App类的外部,它们现在是全局函数,不属于App类的成员,所以实例化后调用self.updateRed自然会提示找不到属性。
  • 同时你代码里还有缩进错误:__init__方法下的所有代码都没有正确缩进,Python中缩进代表代码块归属,没有缩进的内容不属于__init__方法,运行时也会触发语法错误。

和Python版本的关系

你当前遇到的AttributeError报错和Python版本无关,完全是代码结构的问题。但需要注意你代码里from Tkinter import *是Python 2的Tkinter导入写法,如果你是在Python 3环境下运行,修正完当前错误后会触发导入报错,需要改成from tkinter import *。

修正后的完整代码

# Python 3环境下把下面一行改成 from tkinter import *
from Tkinter import *
import RPi.GPIO as GPIO
import time

GPIO.setmode(GPIO.BCM)
GPIO.setup(18, GPIO.OUT)
GPIO.setup(23, GPIO.OUT)
GPIO.setup(24, GPIO.OUT)

pwmRed = GPIO.PWM(18, 500)
pwmRed.start(100)
pwmGreen = GPIO.PWM(23, 500)
pwmGreen.start(100)
pwmBlue = GPIO.PWM(24, 500)
pwmBlue.start(100)

class App:
     def __init__(self, master):
         # __init__内部代码正确缩进
         frame = Frame(master)
         frame.pack()
         Label(frame, text='Red').grid(row=0, column=0)
         Label(frame, text='Green').grid(row=1, column=0)
         Label(frame, text='Blue').grid(row=2, column=0)
         scaleRed = Scale(frame, from_=0, to=100,
         orient=HORIZONTAL, command=self.updateRed)
         scaleRed.grid(row=0, column=1)
         scaleGreen = Scale(frame, from_=0, to=100,
         orient=HORIZONTAL, command=self.updateGreen)
         scaleGreen.grid(row=1, column=1)
         scaleBlue = Scale(frame, from_=0, to=100,
         orient=HORIZONTAL, command=self.updateBlue)
         scaleBlue.grid(row=2, column=1)

     # 三个方法缩进进入App类内部,成为类成员
     def updateRed(self, duty):
         pwmRed.ChangeDutyCycle(float(duty))
     def updateGreen(self, duty):
         pwmGreen.ChangeDutyCycle(float(duty))
     def updateBlue(self, duty):
         pwmBlue.ChangeDutyCycle(float(duty))

root = Tk()
root.wm_title('RGB LED Control')
app = App(root)
root.geometry("200x150+0+0")
root.mainloop()

内容的提问来源于stack exchange,提问作者Onesimus Chandra Pradhan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 15:45:04