簡體   English   中英

放大標簽python tkinter的方形

[英]Zoom into square of labels python tkinter

我有一個標簽制作拼字游戲板。 鏈接到圖片

要生成的代碼:

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這樣的東西。 我看過這個問題,但我特別不明白。 如果我有每種廣場的圖像(這是可能的),我怎么能有效地調整每個標簽的大小? 就像是:

def zoom(self, event):
    if math.isclose(event.x, self.x, abs_tol=self.boardWidth/2) and \
       math.isclose(event.y, self.y, abs_tol=self.boardHeight/2):
        self.height += 30
        self.width += 30
        self.x -= event.x
        self.y -= event.y
        self.label.config(height=self.height, width=self.width)
        self.label.place_configure(x = self.x, y = self.y)

我不確定。 任何幫助都會受到歡迎。 謝謝。

編輯:當我說縮放時,我的意思是實際放大。例如,放大2倍將只有1/4的標簽可見,並且它們每個都是兩倍大。

編輯:順便說一下,所有的代碼都在這個github repo中的tiles.py中。

據我所知,沒有辦法縮放已經在tkinterFrameCanvas上繪制的繪圖。 但是,您可以通過在需要時將單元格尺寸乘以比例因子來實現自己的縮放。 這是一些演示代碼:

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()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM