python中类不是不调用就不会执行吗?


from tkinter import *

class fchk1():
    root1 = Tk()
    root1.title('压缩面板')
    root1.geometry('400x300+200+200')
    #app1 = zhu(master=root1)
    #root1.mainloop()

class zhu(Frame):
    def __init__(self,master=None):
        super(zhu, self).__init__(master)
        self.master=master
        #self.pack()

        self.zhuti1()
    def zhuti1(self):


        Button(root.master,text='解压',command=fchk1).pack()

root=Tk()
root.title('工具面板')
root.geometry('400x300+200+200')
app=zhu(master=root)
root.mainloop()


理论是点击按钮后,class fchk1()才会执行,但是在执行时它会自动执行,请问是什么回事?

这里command需要传入一个callable实例,也就是说需要传一个函数,而你的fchk1是个对象,将fchk1定义成函数即可,如下:


from tkinter import *

def fchk1():
    root1 = Tk()
    root1.title('压缩面板')
    root1.geometry('400x300+200+200')
    #app1 = zhu(master=root1)
    #root1.mainloop()

class zhu(Frame):
    def __init__(self,master=None):
        super(zhu, self).__init__(master)
        self.master=master
        #self.pack()
        self.zhuti1()
    def zhuti1(self):
        Button(root.master,text='解压',command=fchk1).pack()

root=Tk()
root.title('工具面板')
root.geometry('400x300+200+200')
app=zhu(master=root)
root.mainloop()

因为在创建Button对象时需要传入参数command=fchk1,此处需要实例化一个fchk1对象传给Button,所以就执行fchk1了