Tkinter reshaping canvas doesnt work object oriented

47 Views Asked by At

Im still new to Tkinter and I was trying to make a login screen. The functionality is there, however I want my canvas to be 200x300px, however that doesnt seem to work. It returns me with a canvas to just about fit the button and input field. Please help!

import tkinter as tk

class Login_Screen:
def __init__(self, master):
    self.master = master
    self.canvas = tk.Canvas(self.master, width=200, height=300)
    self.frame = tk.Frame(self.canvas)
    self.input_user_log = tk.Entry(self.frame)
    self.button1 = tk.Button(self.frame, text="Log in", width=15, command=self.return_login_info)
    self.input_user_log.pack()
    self.canvas.pack()
    self.button1.pack()
    self.frame.pack()

def return_login_info(self):
    print(self.input_user_log.get())


root = tk.Tk()
app = Login_Screen(root)
root.mainloop()
1

There are 1 best solutions below

0
On BEST ANSWER

Use the geometry() method on master.


import tkinter as tk

class Login_Screen:
    def __init__(self, master):
        self.master = master
        self.master.geometry("300x200")
        self.canvas = tk.Canvas(self.master)
        self.frame = tk.Frame(self.canvas)
        self.input_user_log = tk.Entry(self.frame)
        self.button1 = tk.Button(self.frame, text="Log in", width=15, command=self.return_login_info)
        self.input_user_log.pack()
        self.canvas.pack()
        self.button1.pack()
        self.frame.pack()