当我试图添加“文件”对话框按钮时,一直收到如下错误:
_tkinter.TclError: can't use "pyimage1" as iconphoto: not a photo image
这是我的密码:
from tkinter import *
from PIL import ImageTk, Image
from tkinter import filedialog
from file_dialog import filedialog
root = Tk()
img = PhotoImage(file='icon.png')
root.geometry("700x500") # the application window size
root.iconphoto(False,img) #application icon
root.title("I need a NAME!") # title of window
def file_dialog():
root.filename = filedialog.askopenfilename(initialdir="Downloads", title="Select A File To Start", filetypes=(("mp4 files", "*.mp4"),("mov files", "*.mov"),("png files", "*.png"),("jpeg files", "*.jpeg"),("jpg files", "*.jpg")))
def file_dialog_button(app):
app = app.tk()
button = app.Button(app, text="Start!", command=file_dialog)
button.pack(app)
root.mainloop()
print("Succesful Build")
file_dialog()
file_dialog_button()
发布于 2021-08-12 03:57:50
我对您的代码做了一些修改,使您能够将图像加载到根窗口图标中。
from tkinter import *
是一个糟糕的实践,所以我已经将它更改为import tkinter as tk
,并进行了必要的更改。
问题是,在声明函数和变量之前,您试图引用它们。
import tkinter as tk
from PIL import ImageTk, Image
from tkinter import filedialog
root = tk.Tk()
root.geometry("700x500") # the application window size
root.title("I need a NAME!") # title of window
def file_dialog():
filename = filedialog.askopenfilename(
initialdir="Downloads",
title="Select A File To Start",
filetypes=(
("mp4 files", "*.mp4"),
("mov files", "*.mov"),
("png files", "*.png"),
("jpeg files", "*.jpeg"),
("jpg files", "*.jpg")))
if filename:
root.img = tk.PhotoImage(file=filename)
root.iconphoto( False, root.img ) # application icon
app = tk.Toplevel(root)
app.transient( root )
button = tk.Button(app, text="Start!", command=file_dialog)
button.pack(fill = "both", expand = True)
root.mainloop()
print("Successful Build")
发布于 2021-08-12 03:45:44
.ico
。图标只能是.ico
格式。from file_dialog import filedialog
导入,您已经从tkinter导入了filedialog。TopLevel()
窗口。您可以了解更多关于它们的这里。file_dialog_button()
时,您还没有为变量app
传递一个值。最后的代码应该如下所示:
from tkinter import *
from PIL import ImageTk, Image
from tkinter import filedialog
root = Tk()
img = PhotoImage(file='icon.ico')
root.geometry("700x500") # the application window size
root.iconphoto(False,img) #application icon
root.title("I need a NAME!") # title of window
def file_dialog():
filename = filedialog.askopenfilename(initialdir="Downloads", title="Select A File To Start", filetypes=(("mp4 files", "*.mp4"),("mov files", "*.mov"),("png files", "*.png"),("jpeg files", "*.jpeg"),("jpg files", "*.jpg")))
def file_dialog_button(app):
app = Toplevel()
button = Button(app, text="Start!", command=file_dialog)
button.pack(app)
print("Succesful Build")
file_dialog()
file_dialog_button('exmaple_name')
root.mainloop()
https://stackoverflow.com/questions/68750797
复制相似问题