gpt4 book ai didi

python - 如何在 Canvas Python Tkinter 中居中图像

转载 作者:太空狗 更新时间:2023-10-30 00:24:12 24 4
gpt4 key购买 nike

我正在编写一个程序。这会获取图像并将其放入 Canvas 中。所以它就像一个照片查看器。但我想在 Canvas 小部件的中心获取图像。但它似乎进入了左上角。为什么要这样做?我怎样才能把它放在 Canvas 小部件的中心?

代码:

from Tkinter import *
from PIL import ImageTk, Image
import os

class Application(Frame):
def __init__(self, parent):
Frame.__init__(self,parent)
self.pack(fill=BOTH, expand=True)

self.create_Menu()
self.create_widgets()

def create_Menu(self):
self.menuBar = Menu(self)

self.fileMenu = Menu(self.menuBar, tearoff=0)
self.fileMenu.add_command(label="Open", command=self.getImage)
self.fileMenu.add_separator()
self.fileMenu.add_command(label="Exit", command=self.exitProgram)

self.menuBar.add_cascade(label="File", menu=self.fileMenu)

root.config(menu=self.menuBar)

def create_widgets(self):
self.viewWindow = Canvas(self, bg="white")
self.viewWindow.pack(side=TOP, fill=BOTH, expand=True)

def getImage(self):
imageFile = Image.open("C:/Users/Public/Pictures/Sample Pictures/Desert.jpg")
imageFile = ImageTk.PhotoImage(imageFile)

self.viewWindow.image = imageFile
self.viewWindow.create_image(0, 0, anchor=CENTER, image=imageFile, tags="bg_img")

def exitProgram(self):
os._exit(0)

root = Tk()
root.title("Photo Zone")
root.wm_state('zoomed')

app = Application(root)

root.mainloop()

最佳答案

问题是线路

self.viewWindow.create_image(0, 0, anchor=CENTER, image=imageFile, tags="bg_img")

前两个参数,如此处解释:http://effbot.org/tkinterbook/canvas.htm , 是图像的位置。原点位于 Canvas 的左上角。你的意思是

...(width/2, height/2, anchor=CENTER, ... )

您想要的通常几何意义上的原点位于 Canvas 的中心,或者其宽度的一半和高度的一半。

您似乎使用了“ anchor ”,好像它指定了 Canvas 上的位置。它没有。 "anchor"at center 表示图像的中心将放置在指定的坐标处。来自链接源 (effbot):

ANCHOR: Where to place the bitmap relative to the given position. Default is CENTER.

如果由于某种原因您不知道小部件的宽度和高度,请参阅 How to find out the current widget size in tkinter? . tl;dr 是使用

canvas.winfo_width()

canvas.winfo_height()

关于python - 如何在 Canvas Python Tkinter 中居中图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29132608/

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