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了