Python 如何修复单击时号码不更改的问题

Python 如何修复单击时号码不更改的问题,python,tkinter,Python,Tkinter,脚本启动时,将显示一个带有标题测试的按钮。 应该发生的是,当你点击它时,会出现一个带有点击次数的消息框。 但由于某种原因,这个数字没有上升。 这发生在9号线和10号线 import tkinter as tk from tkinter import * from tkinter.messagebox import * top = Tk() top.geometry("200x100") clicks = 0 text = "Clicks:"

脚本启动时,将显示一个带有标题测试的按钮。 应该发生的是,当你点击它时,会出现一个带有点击次数的消息框。 但由于某种原因,这个数字没有上升。 这发生在9号线和10号线

import tkinter as tk
from tkinter import *   
from tkinter.messagebox import * 

top = Tk()  

top.geometry("200x100")

clicks = 0
text = "Clicks:", clicks + 1

def fun():
    tk.messagebox.showinfo("Test", text)
    
b1 = Button(top,text = "Test",command = fun,foreground = "black",background = "lightgray",activeforeground = "black",activebackground = "darkgrey",pady=50,padx=100)  

b1.pack(side = TOP)
  
top.mainloop()
尝试使用一些OOP:

import tkinter as tk
from tkinter import *
from tkinter.messagebox import *

    class MyClick:
        def __init__(self):
            self.clicks = 0
    
    top = Tk()
    
    top.geometry("200x100")
    
    
    def fun(my_click):
        my_click.clicks += 1
        tk.messagebox.showinfo("Test", f'Clicks: {my_click.clicks}')
    
    my_click = MyClick()
    b1 = Button(top, text="Test", command=lambda: fun(my_click), foreground="black", background="lightgray",
                activeforeground="black", activebackground="darkgrey", pady=50, padx=100)
    
    b1.pack(side=TOP)
    top.mainloop()

我遗漏了什么吗?一旦定义text=…,它就被修复了。它不会在单击更改时自动更新。而且,如果你从未真正改变点击,点击也不会神奇地改变。您需要增加单击次数,更新文本,并在按钮的命令中显示消息框。我建议您在开始更复杂的内容之前,先花一些时间学习基本的python教程。要更改fun方法使用的文本值,您需要在fun函数的顶部说global text,或者,我认为最好创建一个类来保存所有的方法和属性,然后文本可以成为该类的属性,并作为该类的方法访问它。text@PranavHosangadi我已经试过了,但没用。我想我只是错过了一些东西,我没有意识到。如果你能修改我的剧本,我会很高兴的。我也知道基本的python…我知道你的想法,但是有一些错误。你能解决这个问题吗?还是只是我的申请。它在你这边。发帖我会尽力帮忙的。别担心,我已经解决了,但现在我在另一篇帖子中遇到了一个新问题:/