如何使Tkinter画布背景透明?

时间:2018-10-27 11:47:43

标签: python python-3.x canvas tkinter transparent

我正在制作一个国际象棋程序,我希望能够拖动这些棋子。为此,我将作品的图像放在Canvas上以便可以拖动(如果需要,我也可以使用Label)。但是,当我拖动该作品时,有一个白色正方形围绕着作品的图像。

enter image description here

当我研究这个问题时,很多人给出了这个解决方案:

drag_canvas = Canvas(self, height=80, width=80, bg="yellow")
root.wm_attributes("-transparentcolor", "yellow")

这导致背景透明,但是看不到棋盘,而是GUI后面的程序

enter image description here

有什么办法可以使背景透明并在棋盘后面显示棋盘,而不是在tkinter窗口后面显示程序?

注意:我不介意使用任何其他小部件(例如Label),但是它们必须使用Python随附的默认模块(因此没有PIL),因为该程序需要在无法使用的环境中使用下载其他模块。

1 个答案:

答案 0 :(得分:4)

  

问题:如何使Tkinter画布背景透明?

唯一可能的config(...选项,将背景设置为空

c.config(bg='')
     

结果为: _tkinter.TclError:颜色名称未知“”


要获得此结果:

enter image description here

您必须将棋盘和数字放置在同一.Canvas(...中。

    self.canvas = Canvas(self, width=500, height=200, bd=0, highlightthickness=0)
    self.canvas.create_rectangle(245,50,345,150, fill='white')

    self.image = tk.PhotoImage(file='chess.png')
    self.image_id = self.canvas.create_image(50,50, image=self.image)

    self.canvas.move(self.image_id, 245, 100)

使用Python测试:3.5-TkVersion:8.6