I've been working with Tkinter to create new windows through button clicks. Recently I've been trying to size the buttons in order to fit the screen. I tried using the trick that uses a 1 by a 1-pixel image so I can size the buttons but pixels. I've noticed whenever I try to put the image on the button no longer works. If I comment out the image parameter the button starts to work. I have no clue why. Heres the code:
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()