私はチェスプログラムを作っていますが、ピースをドラッグできるようにしたいと思っています。これを行うために、作品の画像をCanvas
に置いてドラッグできるようにします(必要に応じてLabel
を使用することもできます)。ただし、ピースをドラッグすると、ピースの画像を囲む白い正方形が表示されます。
私が問題を調査したとき、多くの人々がこの解決策を与えました:
drag_canvas = Canvas(self, height=80, width=80, bg="yellow")
root.wm_attributes("-transparentcolor", "yellow")
これにより背景が透明になりましたが、表示されたのはチェス盤ではなく、GUIの背後にあるプログラムでした。
Tkinterウィンドウの背後にあるプログラムではなく、背景を透明にしてチェス盤を背後に表示する方法はありますか?
注:他のウィジェット(例:Label
)を使用してもかまいませんが、このプログラムは次のようにする必要があるため、デフォルトでPython(PILなし)のモジュールを使用する必要があります。他のモジュールをダウンロードできない環境で使用されます。
質問:tkinterキャンバスの背景を透明にする方法は?
背景をゼロに設定するための唯一の可能なconfig(...
オプション
c.config(bg='')
結果:_ tkinter.TclError:不明な色名 ""
この結果を得るには:
チェス盤とフィギュアを同じ.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