PhotoImage没有这样的文件或目录错误

时间:2018-09-25 21:08:59

标签: python tkinter

所以基本上,我正在尝试学习tkinter,但是PhotoImage小工具将无法正常工作。

我的代码:

import tkinter as tk

root = tk.Tk()
logo = tk.PhotoImage(file ="monky.gif")

def test():
    print("Hello World")

text = tk.Label(root, text = "Hello World")
text.pack()

我也尝试过:

logo = tk.PhotoImage(file ="/Users/MinecraftMaster/Desktop/Python/Tests/monky.gif")

错误消息:

Traceback (most recent call last):
  File "/Users/MinecraftMaster/Desktop/Python/Tests/Tkinter Test.py", line 4, in <module>
    logo = tk.PhotoImage(file ="monky.gif")
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/tkinter/__init__.py", line 3539, in __init__
    Image.__init__(self, 'photo', name, cnf, master, **kw)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/tkinter/__init__.py", line 3495, in __init__
    self.tk.call(('image', 'create', imgtype, name,) + options)
_tkinter.TclError: couldn't open "monky.gif": no such file or directory

这是我的目录的图片:

https://imgur.com/HwJz7Eo

编辑:一位朋友帮助我解决了这个问题。对于其他遇到此问题的人,只需将目录放入变量中,然后调用它即可。感谢所有尝试提供帮助的人

3 个答案:

答案 0 :(得分:-1)

您尚未放置包含标签之类照片的小部件,然后它应该出现。

import tkinter as tk

root = tk.Tk()
photo = tk.PhotoImage(file = "monkey.gif")
label = tk.Label(image = photo).pack()
def test():
    print("Hello World")

text = tk.Label(root, text = "Hello World")
text.pack()

窗口是什么样子
https://gyazo.com/8ce068a49c99a8a7f53f64cd5024a48f

答案 1 :(得分:-1)

如果您要打开以下文件:

export class AuthGuard implements CanActivate {
    private user$: Observable<User>;
    constructor(
        private service: UserService,
        private router: Router
    ) {
        this.user$ = service.user$;
    }

    canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {
        return Observable.create((observer: NextObserver<boolean>) => {
            this.user$.subscribe((user: User) => {
                console.log('authguard', user);
                console.log('authguard', user.email);
                console.log('user.is_signed_in', user.is_signed_in);
                if (!user.is_signed_in) {
                    console.log('redirecting to signin page');
                    this.router.navigate(
                        ['user', 'signin'],
                        {
                            queryParams: {
                                url: state.url
                            }
                        }
                    );
                }

                observer.next(user.is_signed_in);
                observer.complete();
            });
        });
    }
}

然后,文件必须位于程序(将读取该文件)所在的文件夹中。例如:

monky.gif 路径:logo = tk.PhotoImage(file ="monky.gif")
程序路径:monky.gif


您尝试提供完整路径:

D:/foo/bar/monky.gif

但这不是完整路径。

完整路径为:

D:/foo/bar/example.py

即还要在路径之前添加带有冒号的磁盘名称。因此,请尝试:

logo = tk.PhotoImage(file ="/Users/MinecraftMaster/Desktop/Python/Tests/monky.gif")

答案 2 :(得分:-1)

@Omaro_IB。下图显示了我使用的脚本和结果。 monky

您需要确保monky.gif文件与python脚本文件位于同一目录中,例如monky.py

要显示图像,您需要在image=logo方法中使用compound='top'tk.Label选项来告诉tkinter同时显示图像和文本,例如图像位于顶部

希望以上帮助。

更新:如何检查monky.gif文件与python脚本文件位于同一目录中。

打开一个终端,例如按Ctr + Alt + T。如果您的图片和python文件位于Home_folder / Desktop / test_folders中,请在终端中键入cd命令以进入您的文件夹(即目录)。然后使用ls命令列出该文件夹中的文件。这些命令可帮助您查看python文件(例如monky.py)和monky.gif文件在同一目录中。如果这些文件不在同一文件夹中,则不会出现图像。

$ cd Desktop/test_folder/
$ ls
monky.gif  monky.py