放大python tkin标签的正方形

2024-10-16 17:28:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个正方形的标签,用来做拼字板。(link to picture

要生成的代码:

colors = {"TWS":"red", "DWS":"pink", "TLS":"light green", "DLS":"light blue", "*":"pink"}
self.boardFrame = Frame(self.root, bd=1, relief=SUNKEN)
self.boardFrame.place(x=50, y=50, width=497, height = 497)
labels = list()
squares = list()
for i in range(16):
    for j in range(16):
        label = self.board[j][i]
        if label in self.extraList:
            entry = Frame(self.boardFrame, bd=1, relief=RAISED)
            entry.place(x=(i*31), y=(j*31), width=31, height=31)
            labels.append(func.Label(entry, text = label,
                                     height = 31, width = 31))
            if label in colors.keys():
                labels[-1].config(bg=colors[label])
            labels[-1].pack()

我想让它能够放大当用户点击它。我听说你可以用canvas之类的东西。我看过this question,但不是特别明白。如果我有一个图像为每种类型的正方形(这是可能的),我如何有效地调整每个标签的大小?比如:

^{pr2}$

我不确定。欢迎任何帮助。谢谢。在

编辑:当我说缩放时,我的意思是放大。例如,放大2x将只有1/4的标签可见,并且每个标签都将是原来的两倍。在

编辑:顺便说一下,所有代码都在this github repo中的tiles.py。在


Tags: 代码inselflabels标签widthframelabel
1条回答
网友
1楼 · 发布于 2024-10-16 17:28:08

据我所知,没有办法缩放已经在tkinterFrame或{}上绘制的绘图。但您可以在需要时通过将单元格尺寸乘以比例因子来实现缩放。 下面是一些演示代码:

from tkinter import *

def drawBoard(boardFrame, scale):
   cellSize = 31 * scale

   for i in range(16):
      for j in range(16):
         entry = Frame(boardFrame, bd=1, relief=RAISED)
         entry.place(x=(i*cellSize), y=(j*cellSize), width=cellSize, height=cellSize)

def buttonCallback(event):      
    global scale
    scale = scale + 0.1
    drawBoard(boardFrame, scale)        

scale = 1.0
root = Tk()

boardFrame = Frame(root, bd=1, relief=SUNKEN)
boardFrame.place(x=50, y=50, width=497, height = 497)

drawBoard(boardFrame, scale)    
root.bind("<Button-1>", buttonCallback)

root.mainloop()

相关问题 更多 >