首页 > 解决方案 > 为什么我不能在画布中设置背景

问题描述

我正在尝试将背景图像放入这样的画布中:

import tkinter as tk


class App(tk.Frame):

    def __init__(self, master=None):
        super().__init__(master)
        self.pack()
        self.canvas = GameBoard()
        self.canvas.pack()


class GameBoard(tk.Canvas):

    WIDTH = 600
    HEIGHT = 600
    BOARD_IMAGE_PATH = '../resources/background600x600.png'

    def __init__(self):
        super().__init__(width=GameBoard.WIDTH, height=GameBoard.HEIGHT)
        self.boardImage = tk.PhotoImage(file=GameBoard.BOARD_IMAGE_PATH)
        self.create_image(0, 0, self.boardImage, anchor='nw')


root = tk.Tk()
app = App(root)
app.mainloop()

但我收到此错误消息:

C:\Users\Tata\Documents\python\PycharmProjects\CanvasBackground\venv\Scripts\python.exe C:/Users/Tata/Documents/python/PycharmProjects/CanvasBackground/GUI/frame.py
Traceback (most recent call last):
  File "C:\Users\Tata\Documents\python\PycharmProjects\CanvasBackground\GUI\frame.py", line 21, in <module>
    app = App(root)
  File "C:\Users\Tata\Documents\python\PycharmProjects\CanvasBackground\GUI\frame.py", line 14, in __init__
    self.canvas = GameBoard()
  File "C:\Users\Tata\Documents\python\PycharmProjects\CanvasBackground\GUI\gameBoard.py", line 13, in __init__
    self.create_image(0, 0, self.boardImage, anchor='nw')
  File "C:\Users\Tata\AppData\Local\Programs\Python\Python39\lib\tkinter\__init__.py", line 2787, in create_image
    return self._create('image', args, kw)
  File "C:\Users\Tata\AppData\Local\Programs\Python\Python39\lib\tkinter\__init__.py", line 2773, in _create
    return self.tk.getint(self.tk.call(
_tkinter.TclError: unknown option "pyimage3"

Process finished with exit code 1

当我尝试运行调试器时,它说

Connection to Python debugger failed
Interrupted function call: accept failed

这完全超出了我的范围。为什么它不起作用,为什么乞丐拒绝合作?

标签: pythonpython-3.xtkintercanvastkinter-canvas

解决方案


定义图像时需要一个关键字参数。改变这个:

self.create_image(0, 0, self.boardImage, anchor='nw')

...对此:

self.create_image(0, 0, image=self.boardImage, anchor='nw')

推荐阅读