鱼C论坛

 找回密码
 立即注册
查看: 36|回复: 2

Tkinter 程序报错 ?

[复制链接]
发表于 7 小时前 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x

  1. from tkinter import *
  2. root=Tk()
  3. root.geometry("344x233")
  4. def gl(lg):
  5.      h.config(background=lg)
  6. h=Button(root,
  7.          text="Tildebx",
  8.          width=26,height=6,
  9.          relief="groove",
  10.          borderwidth=9,
  11.          background="mediumseagreen",
  12.          command=gl("plum"))
  13. h.pack(expand=True)
  14. mainloop()
复制代码

想法:点击按钮后,使其本身改变颜色
报错信息:h 未定义,怎么修改呀 ?
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 6 小时前 | 显示全部楼层
你好!你的代码报错是因为在创建按钮时,command=gl("plum") 这行代码会立即调用 gl 函数,而此时按钮变量 h 还未定义,导致“h 未定义”错误。

解决方案是将 command 参数改为一个 lambda 函数,这样只有在点击按钮时才会调用 gl 函数,此时 h 已经定义。

修改后的代码如下:


  1. from tkinter import *
  2. root = Tk()
  3. root.geometry("344x233")

  4. def gl(lg):
  5.     h.config(background=lg)

  6. h = Button(root,
  7.            text="Tildebx",
  8.            width=26, height=6,
  9.            relief="groove",
  10.            borderwidth=9,
  11.            background="mediumseagreen",
  12.            command=lambda: gl("plum"))  # 修改这里:使用 lambda 延迟调用
  13. h.pack(expand=True)
  14. mainloop()
复制代码


这样修改后,点击按钮时,按钮本身的背景颜色就会变为 "plum"。如果还有其他问题,欢迎继续提问!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 4 小时前 | 显示全部楼层
from tkinter import *
root=Tk()
root.geometry("344x233")
def gl(): #修改gl函数,使其不需要参数
     h.config(background="plum")
h=Button(root,
         text="Tildebx",
         width=26,height=6,
         relief="groove",
         borderwidth=9,
         background="mediumseagreen",
         command=gl)  #直接传递函数引用
h.pack(expand=True)
mainloop()
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-8-30 16:10

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表