gpt4 book ai didi

python - 为什么 Tkinter 中的空白图像是我指定的 1/4 大小?

转载 作者:行者123 更新时间:2023-11-30 22:11:47 25 4
gpt4 key购买 nike

我正在使用 Tkinter 在 Python 程序中创建 Canvas ,并在其中放入纯色单色图像。 (我需要其中的图像,因为稍后我将用另一个图像替换该图像,这就是为什么我不只指定背景。)

我指定了 Canvas 的大小,并在窗口打开时检查了它。是 640x640。我将空白灰色图像指定为相同大小,但它的大小为 320x320,仅填充 Canvas 的四分之一。

我知道我可以将图像大小更改为 1280x1280,这样整个 Canvas 就会变成灰色,但是当我向 Canvas 添加其他图像时,我不想遇到类似的问题。

这是程序:

#!/usr/bin/python

import datetime
import os
from PIL import Image, ImageTk
import sys
import Tkinter as tk

width = 640
height = 640

guiRoot = tk.Tk()
pWindow = tk.Frame(guiRoot)
BlankImage = None
CanvasMap = None

if __name__ == "__main__":

bmpfile = sys.argv[1]
print "Working with file: %s" % bmpfile

BlankImage = ImageTk.PhotoImage(Image.new('RGB', (width, height), 'gray'))
CanvasMap = tk.Canvas(guiRoot, width=width, height=height)
CanvasMap.create_image(0, 0, image=BlankImage)

CanvasMap.grid(row=0, column=0, columnspan=4) #later it's 4 columns

os.system('''/usr/bin/osascript -e 'tell app "Finder" to set frontmost of process "Python" to true' ''')
guiRoot.mainloop()

运行时,看起来像这样。

为什么图像只有 Canvas 大小的 1/4?我需要做哪些不同的事情,以便当我对 Canvas 和图像使用相同尺寸时,它们将具有相同的尺寸?

Image of open window with 1/4 size blank gray image

最佳答案

显示整个图像,但以 Canvas 原点 (0, 0) 为中心,这就是为什么您只能看到它的右下角1/4

您需要将显示设置为 Canvas 中心(WIDTH//2,HEIGHT//2),或将图像句柄设置为左上角。

这是一种方法:

import datetime
import os
from PIL import Image, ImageTk
import sys
import Tkinter as tk

width = 640
height = 640

guiRoot = tk.Tk()
pWindow = tk.Frame(guiRoot)
BlankImage = None
CanvasMap = None

if __name__ == "__main__":

bmpfile = sys.argv[1]
# print "Working with file: %s" % bmpfile

BlankImage = ImageTk.PhotoImage(Image.new('RGB', (width, height), 'gray'))
CanvasMap = tk.Canvas(guiRoot, width=width, height=height)
CanvasMap.create_image(width//2, height//2, image=BlankImage)

CanvasMap.grid(row=0, column=0, columnspan=4) #later it's 4 columns

os.system('''/usr/bin/osascript -e 'tell app "Finder" to set frontmost of process "Python" to true' ''')
guiRoot.mainloop()

关于python - 为什么 Tkinter 中的空白图像是我指定的 1/4 大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51316684/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com