Python:Tkinter 图标位图分配仅适用于模块级别
Python: Tkinter iconbitmap assignment only works at module level
我正在使用 tkinter.ttk
window 并且我正在使用一个图标来设置我的 window 的图标位图。但是 root.iconbitmap()
在 Windows 10 上被忽略了。但是有一个简单的方法可以避免错误:root.tkinter.call('wm', 'iconphoto', root._w, icon)
所以:
from tkinter import *
from tkinter.ttk import *
root=Tk()
root.call('wm', 'iconphoto', root._w, icon)
有效。
但是:
def func():
root=Tk()
root.call('wm', 'iconphoto', root._w, icon)
不有效。发生错误。有趣的是,该错误与您使用 root.iconbitmap()
:
时发生的错误完全相同
Traceback (most recent call last):
File "E:\test.py", line 95, in <module>
func()
File "E:\test.py", line 36, in func
t.call('wm', 'iconphoto', t._w, icon)
_tkinter.TclError: can't use "pyimagex" as iconphoto: not a photo Image
还有一个有趣的事实:在另一个文件中,我也尝试将它用作函数,它起作用了。在新文件 (test.py
) 中,它不起作用(而且功能相同)。
有谁知道为什么它不起作用以及我可以做些什么来避免错误?提前致谢...
如果您已经打开了一个 window 并想打开另一个有自己图标的,那么您应该使用 Toplevel()
而不是 Tk()
并更改图标使用
W2 = Toplevel()
icon = PhotoImage(file='icon.png')
W2.tk.call('wm', 'iconphoto', root._w, icon)
示例:
from tkinter import *
from tkinter.ttk import *
def test():
root = Toplevel()
icon = PhotoImage( file='icon.png' ) # path to the icon
root.tk.call('wm', 'iconphoto', root._w, icon)
r = Tk()
b = Button(r, text='press', command=test)
b.pack()
mainloop()
我正在使用 tkinter.ttk
window 并且我正在使用一个图标来设置我的 window 的图标位图。但是 root.iconbitmap()
在 Windows 10 上被忽略了。但是有一个简单的方法可以避免错误:root.tkinter.call('wm', 'iconphoto', root._w, icon)
所以:
from tkinter import *
from tkinter.ttk import *
root=Tk()
root.call('wm', 'iconphoto', root._w, icon)
有效。 但是:
def func():
root=Tk()
root.call('wm', 'iconphoto', root._w, icon)
不有效。发生错误。有趣的是,该错误与您使用 root.iconbitmap()
:
Traceback (most recent call last):
File "E:\test.py", line 95, in <module>
func()
File "E:\test.py", line 36, in func
t.call('wm', 'iconphoto', t._w, icon)
_tkinter.TclError: can't use "pyimagex" as iconphoto: not a photo Image
还有一个有趣的事实:在另一个文件中,我也尝试将它用作函数,它起作用了。在新文件 (test.py
) 中,它不起作用(而且功能相同)。
有谁知道为什么它不起作用以及我可以做些什么来避免错误?提前致谢...
如果您已经打开了一个 window 并想打开另一个有自己图标的,那么您应该使用 Toplevel()
而不是 Tk()
并更改图标使用
W2 = Toplevel()
icon = PhotoImage(file='icon.png')
W2.tk.call('wm', 'iconphoto', root._w, icon)
示例:
from tkinter import *
from tkinter.ttk import *
def test():
root = Toplevel()
icon = PhotoImage( file='icon.png' ) # path to the icon
root.tk.call('wm', 'iconphoto', root._w, icon)
r = Tk()
b = Button(r, text='press', command=test)
b.pack()
mainloop()