首页 > 解决方案 > 为什么按钮不会在 Tkinter 中显示

问题描述

我试图在棋盘上放置按钮,棋盘是图像,但没有显示女王、国王和主教按钮。我将如何解决这个问题?

from tkinter import *
from PIL import Image, ImageTk
root = Tk()
root.geometry("1200x1200")
img = Image.open("s8XND.png")

resized = img.resize((1200, 900), Image.ANTIALIAS)
chessboard = ImageTk.PhotoImage(resized)
canvas = Canvas(root, width = 1200, height = 900)
canvas.place( relheight = 1, relwidth = 1)
canvas.create_image(0, 0, image = chessboard, anchor = "new")

label = Label(root, bg = chessboard)
label.place(pady = 10, padx = 20)
#Black Rook
blackRook = Button(root, text = "Castle", fg = "white", bg = "black")
blackRook.grid(row = 1, column = 0)

#Black Knight
blackHorse = Button(root, text = "Horse", fg = "white", bg = "black")
blackHorse.grid(row = 1, column = 1)

#Black Bishop
blackBishop = Button(root, text = "Bishop", fg = "white", bg = "black")
blackHorse.grid(row = 1, column = 2)

#Black Queen
blackQueen= Button(root, text = "Queen", fg = "white", bg = "black")
blackQueen.grid(row = 1, column = 3)

#Black King
blackKing= Button(root, text = "King", fg = "white", bg = "black")
blackQueen.grid(row = 1, column = 4)

root.mainloop()

标签: pythontkinter

解决方案


这段代码对我有用。请注意,我删除了标签并修复了代码中的几个错误:

from tkinter import *
from PIL import Image, ImageTk
root = Tk()
root.geometry("1200x1200")
img = Image.open("s8XND.png")

resized = img.resize((1200, 900), Image.ANTIALIAS)
chessboard = ImageTk.PhotoImage(resized)
canvas = Canvas(root, width=1200, height=900)
canvas.place(relheight=1, relwidth=1)
canvas.create_image(0, 0, image=chessboard, anchor="nw")

# Black Rook
blackRook = Button(root, text="Castle", fg="white", bg="black")
blackRook.grid(row=1, column=0)

# Black Knight
blackHorse = Button(root, text="Horse", fg="white", bg="black")
blackHorse.grid(row=1, column=1)

# Black Bishop
blackBishop = Button(root, text="Bishop", fg="white", bg="black")
blackBishop.grid(row=1, column=2)

# Black Queen
blackQueen = Button(root, text="Queen", fg="white", bg="black")
blackQueen.grid(row=1, column=3)

# Black King
blackKing = Button(root, text="King", fg="white", bg="black")
blackKing.grid(row=1, column=4)

root.mainloop()

另请注意,您使用blackHorse和犯了一些复制粘贴错误blackKing


推荐阅读