I have 2 seperate files and trying to make a sort of 'module' with this one file. But it does not work.
The background color is still this weird gray color even if I set it to say, black. Here is the 'module' file:
import tkinter as tk
class TUICanv:
global screenWidth, screenHeight
def __init__(self,win,bg="#232627"):
self.screenWidth = win.winfo_screenwidth()
self.screenHeight = win.winfo_screenheight()
self.canvas = tk.Canvas(win,width=self.screenWidth,height=self.screenHeight,background=bg)
self.background = bg
self.width = self.canvas.winfo_width()
self.height = self.canvas.winfo_height()
And here is the other file:
import tkinter as tk
import terkinter as tr
import os
import re
win = tk.Tk()
allowedChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_"
win.title("Terminos")
canv = tr.TUICanv(win)
win.geometry(f'{canv.screenWidth}x{canv.screenHeight}')
canv.canvas.create_text(100,10,fill="darkblue",font="Times 20 italic bold",text="Click the bubbles that are multiples of two.")
win.mainloop()
The background does not change. It may be that the window in the other file is different, because I have only started tkinter 2 weeks ago.
As others have pointed out, the problem is that you aren't making the widget visible by calling pack
, place
, or grid
, or adding to the screen in some other method.
The simple solution is for your app to call one of those methods. For example:
...
win.title("Terminos")
canv = tr.TUICanv(win)
canv.cavas.pack(side="top", fill="both", expand=True)
...
That's not the best solution though, since it depends on the calling app to know that it implements an inner canvas. A better solution would be for your class to inherit from tk.Canvas
. In that way it behaves just like the canvas.
For example:
import tkinter as tk
class TUICanv(tk.Canvas):
global screenWidth, screenHeight
def __init__(self,win,bg="red"):
self.screenWidth = win.winfo_screenwidth()
self.screenHeight = win.winfo_screenheight()
super().__init__(win,width=self.screenWidth, height=self.screenHeight,background=bg)
self.width = self.winfo_width()
self.height = self.winfo_height()
root = tk.Tk()
c = TUICanv(root)
c.pack(side="top", fill="both", expand=True)
root.mainloop()