鱼C论坛

 找回密码
 立即注册
查看: 58|回复: 4

[已解决]Tkinter —— 屏蔽按钮问题

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

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

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

x


要求:当按【苹果】按钮以后,【苹果】就立刻被屏蔽;当按【香蕉】按钮以后,同样也是【香蕉】就立刻被屏蔽。
from tkinter import *
root = Tk()
m=["苹果","香蕉","菠萝"]
def a(i):
      Toplevel(root)
      b.config(state="disable")
for i in range(len(m)):
      b=Button(root,
             text=m[i],
             command=lambda i=i : a(i))
      b.pack()
mainloop()
最佳答案
3 天前
from tkinter import *
root = Tk()
m=["苹果","香蕉","菠萝"]
b=[]
for i in range(len(m)):
      bi=Button(root,
             text=m[i],
             command=lambda i=i : a(i))
      bi.pack()
      b.append(bi)

def a(i):
      b[i].config(state="disable")

mainloop()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 3 天前 | 显示全部楼层
你需要在函数中传递按钮 `b` 的引用,这样你就可以在按下按钮时禁用它。可以通过将按钮作为参数传递给函数来实现这个效果。以下是修正后的代码:
from tkinter import *

def disable_button(button):
    button.config(state="disable")

def create_buttons(root, labels):
    for label in labels:
        b = Button(root, text=label, command=lambda btn=b: disable_button(btn))
        b.pack()

root = Tk()
button_labels = ["苹果", "香蕉"]
create_buttons(root, button_labels)
root.mainloop()

关键修改在于 `disable_button(button)` 函数中,直接传入按钮的引用,然后在 `create_buttons` 函数中,通过 `lambda btn=b: disable_button(btn)` 将当前按钮传递给函数。这样,当你按下按钮时,它会被禁用。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 3 天前 | 显示全部楼层
from tkinter import *

def disable_button(button):
    button.config(state="disable")

def create_buttons(root, labels):
    for label in labels:
        b = Button(root, text=label, command=lambda btn=b: disable_button(btn))
        b.pack()

root = Tk()
button_labels = ["苹果", "香蕉"]
create_buttons(root, button_labels)
root.mainloop()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 3 天前 From FishC Mobile | 显示全部楼层
某一个“天” 发表于 2024-11-18 20:04

按照您给出的程序运行,系统报错!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 3 天前 | 显示全部楼层    本楼为最佳答案   
from tkinter import *
root = Tk()
m=["苹果","香蕉","菠萝"]
b=[]
for i in range(len(m)):
      bi=Button(root,
             text=m[i],
             command=lambda i=i : a(i))
      bi.pack()
      b.append(bi)

def a(i):
      b[i].config(state="disable")

mainloop()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-21 16:51

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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