turntohotcool 2023-09-04 15:40 采纳率: 16.7%
浏览 4

为什么我的”abc“内容直接就出来了,我还没点button呢

为什么我的”abc“内容直接就出来了,我还没点button呢?fun()不应该是点了之后才被调用的command吗?

from tkinter import *

root=Tk()
txt=Text(root)

def fun():
    txt.insert(END,"abc")
    
b=Button(root,text="hit",command=fun())

txt.pack()
b.pack()

root.mainloop()
    



  • 写回答

2条回答 默认 最新

  • qq_37749055 2023-09-04 15:47
    关注

    在你的代码中,fun()函数被立即调用,而不是等到按钮被点击后才调用。这是因为你在command参数中直接传递了函数调用的结果(fun()),而不是函数本身(fun)。

    在Python中,函数是一等公民,可以将函数作为参数传递给其他函数或对象。在Tkinter中,按钮的command参数接收一个回调函数,这个函数将在按钮被点击时执行。

    要解决这个问题,你只需要将command参数更改为command=fun,而不是command=fun()。这样,Tkinter会将函数引用传递给按钮,而不是立即调用函数。以下是修正后的代码:

    from tkinter import *
    
    root = Tk()
    txt = Text(root)
    
    def fun():
        txt.insert(END, "abc")
    
    b = Button(root, text="hit", command=fun)  # 去掉函数调用的括号
    
    txt.pack()
    b.pack()
    
    root.mainloop()
    

    现在,当你点击按钮时,fun()函数将被调用,并在文本框中插入"abc"。

    评论

报告相同问题?

问题事件

  • 创建了问题 9月4日

悬赏问题

  • ¥15 求一个C# sm4 加密解密的代码
  • ¥15 想做个网络加速器,怎么实现
  • ¥20 centos7下载mysql提示DNS解析异常
  • ¥20 vx转账功能对方不能领取
  • ¥15 vue2+codemirror 运行后页面光标太大了
  • ¥15 pdfjs库如何在前端实现打印、旋转等功能
  • ¥15 combobox数据绑定问题
  • ¥15 maven打包时,为什么有的依赖打不进去包
  • ¥15 求复现机器学习文章一篇
  • ¥15 爬虫抓取数据|解析视频文本内容(相关搜索:自动化)