我正在遵循基本的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()
如果我注释掉对标签的所有引用,这似乎是可行的,而且如果我在函数之外进行操作,则图像有时也可以工作。