python - 为什么按钮不会在 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()
解决方案
这段代码对我有用。请注意,我删除了标签并修复了代码中的几个错误:
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
。
推荐阅读
- javascript - 如何修复 Rails 'ActiveRecord::RecordNotFound(找不到没有 ID 的程序)'
- docker - 已分配 docker 映像 throws 端口的 ansible 部署
- java - 数据源详细信息作为系统属性?
- rx-swift - RxSwift:在 onNext 之后调用 onCompleted 仅提供已完成的事件
- javascript - 如何通过“to”对象中的 Redirect 道具传递功能。获取 DataCloneError
- javascript - 如何创建圆角图表?
- javascript - 如何在Javascript中将带有3个字母时区缩写的日期转换为UTC?
- r - R中未加权最小二乘估计的验证性因子分析
- reactjs - 无法读取 react-redux 中未定义的属性“对象中的某些字段”
- bash - 有没有办法可以接受用户输入并将其写入文件?