Я следую базовому учебнику по Tkinter, и я почти точно следовал ему, но также использовал свои минимальные знания Tkinter. Тем не менее, каждый раз, когда я запускаю его, я получаю сообщение об ошибке, но только с виджетами.
Сообщение об ошибке:
self.tk.call(_tkinter.TclError: expected integer but got "New"
Согласно сообщению об ошибке, это когда я присваиваю Label(head)
lbl_logo on line 46
.
Поскольку я делаю это в колледже, я должен следовать учебному пособию, поэтому некоторые из них могут быть сокращены, например: использование .config
# Libraries
from tkinter import *
# generates password
class password_generator:
def __init__(self):
pass
# Window
class window():
def __init__(self):
# initial setup
self.title('Safe G - The Password Generator')
self.geometry('1600x900+100+100') # width (w), height (h), x-start-position (x), y-start-position (y)
self.configure(bg='gray20')
self.iconbitmap('safeg_icon.ico')
# initial defaults
self.option_add('*Font', 'Courier New')
self.option_add('*Background', 'gray20')
self.option_add('*Label.Font', 'Courier New')
# constructs header
head = Frame(self, highlightthickness=5, highlightbackground='tomato2')
head.pack(fill='both', expand=True)
# HEADER - logo
img = PhotoImage(file='file.gif') # isn't actually called file.gif, but is a .gif file
lbl_logo = Label(head)
lbl_logo.config(image = img)
lbl_logo.image = img
lbl_logo.pack(side=LEFT, padx=10, pady=10)
# HEADER - title
lbl_title = Label(head)
lbl_title.config(text='Safe G - The Password Generator', font=('Courier New 20'))
lbl_title.pack(side=LEFT, padx=10, pady=10)
# constructs main body
body = Frame(self, highlightthickness=5, highlightbackground='orange2')
body.pack(fill='both', expand=True)
# constructs footer
foot = Frame(self, highlightthickness=5, highlightbackground='gold')
foot.pack(fill='both', expand=True)
# Initalises program
if __name__ == '__main__':
win = Tk()
window.__init__(win)
win.mainloop()
Кажется, будет работать, если я закомментирую все и всяссылки на метку и изображение, кажется, иногда работают, если я делаю это вне функции.