我一直在与Tkinter一起通过单击按钮创建新窗口。最近,我一直在尝试调整按钮的大小以适合屏幕大小。我尝试使用使用1 x 1像素图像的技巧,以便可以调整按钮的大小,但可以设置像素。每当我尝试将图像放在按钮上时,我就注意到不再起作用。如果我注释掉image参数,该按钮将开始工作。我不知道为什么。这是代码:
import tkinter as tk
import module1
class win1:
def __init__(self,master):
self.master = master
self.master.geometry("400x400")
self.frame=tk.Frame(self.master)
#self.butnew("Hi there","2",win2)
##################### FullScreen ###################
w, h = master.winfo_screenwidth(), master.winfo_screenheight()
self.master.overrideredirect(1)
self.master.geometry("%dx%d+0+0" % (w, h))
self.master.focus_set() # <-- move focus to this widget
self.master.bind("<Escape>", lambda e: e.widget.quit())#Quits when escape is pressed
for i in range(3):
self.master.columnconfigure(i, weight=1, minsize=75)
self.master.rowconfigure(i, weight=1, minsize=50)
for j in range(0, 3):
self.butnew("ji","g",module1.stonky,i,j)
self.frame.pack()
def butnew(self,text,number,_class,i,j):
sizeWidth = int(self.master.winfo_screenwidth()/81)
sizeHeight = int(self.master.winfo_screenheight()/81)
pixel = tk.PhotoImage(width=sizeWidth, height=sizeWidth)
tk.Button(self.frame,
text = text,
image=pixel,#If i comment out this line it works
#width=sizeWidth,
#height=sizeHeight,
compound="center",
command= lambda: self.new_window(number,_class)).grid(row=i,
column=j,
padx =3,
pady=4)
def new_window(self,number,_class):
self.new = tk.Toplevel(self.master)
_class(self.new,number)
root = tk.Tk()
app = win1(root)
root.mainloop()
答案 0 :(得分:1)
这是因为图像是在函数内部创建时被垃圾收集的。您需要保留对图像的引用:
float MoveDirectionY = jumpForce * Physics.gravity.y;