【问题标题】:Python Tkinter Obtain Some Parameters on CanvasPython Tkinter 在 Canvas 上获取一些参数
【发布时间】:2021-08-29 23:51:13
【问题描述】:

希望你们一切都好。

现在,我创建了一个 Tkinter Canvas,它显示了一个可调整大小的圆形对象。我需要做的是在画布上打印以下参数:

窗口位置(根据电脑屏幕,左上角)

圆形图像的中心点(根据窗口X,Y)

圆形图片的宽度和高度

这是我的代码:

from tkinter import *
from PIL import ImageTk, Image

def locator():

    root = Tk()
    root.geometry("300x300")
    root.overrideredirect()

    bg = ImageTk.PhotoImage(file="Golden-circle (1).png")

    root.attributes('-alpha', 0.25)
    my_canvas = Canvas(root, width=300, height=300)
    my_canvas.pack(fill="both", expand=True)
    my_canvas.create_image(350,350, image=bg, anchor="nw",tags="circle")
    #Draw an Oval in the canvas

    def resizer(e):
        global bg1, resized_bg, new_bg
        # Open our image
        bg1 = Image.open("Golden-circle (1).png")
        # Resize the image
        resized_bg = bg1.resize((e.width, e.width), Image.ANTIALIAS)
        #resized_bg = bg1.resize((e.height, e.height), Image.ANTIALIAS) if e.height < e.width else bg1.resize((e.width, e.width), Image.ANTIALIAS)
        # Define our image again
        new_bg = ImageTk.PhotoImage(resized_bg)
        # Add it back to the canvas
        my_canvas.create_image(0,0, image=new_bg, anchor="nw")


    root.bind('<Configure>', resizer)
    root.mainloop()

locator()

我需要做什么才能检索/打印这些参数?

【问题讨论】:

    标签: python tkinter


    【解决方案1】:

    我没有你拥有的那个金色圆圈图像,所以不能完全确定它应该是什么样子。我知道这是一个螺旋,但我不知道你是否在调整大小时尝试keep it's aspect-ratio

    另外,我无法让它显示在画布上。不知道为什么会这样,但我知道如何将图像放在tk.Buttontk.Label 上,所以这就是我现在所做的。随心所欲地显示它,但主要问题是如何打印出这些坐标,所以你会注意到一对print() 语句应该显示你正在寻找的东西。

    #! /usr/bin/python3
    
    ##~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    
    import os
    import math
    import tkinter as tk
    from PIL import ImageTk, Image
    
    root = tk .Tk() ; root .title( 'resizer' )
    w, h = 300, 300
    border = 50
    root .geometry( f'{w}x{h}' )
    root .attributes( '-alpha', 0.25 )
    
    cwd  = os .getcwd()
    filename  = os .path .join( cwd, 'image.jpg' )
    img  = Image .open( filename )
    resize  = img .resize(  ( w +border, h +border ),  Image .ANTIALIAS  )
    bg  = ImageTk .PhotoImage( image = resize )
    
    canvas = tk .Label( root,  width = w,  height = h,  image = bg )
    canvas .pack()
    
    def resizer( event ):
        global img, bg, border
        print( f'x: {event .x}, y: {event .y}   w: {event .width}, h: {event .height}' )
        print( f'mid x: { math .floor( event .x +(event .width /2) ) },\
                 mid y: { math .floor( event .y +(event .height /2) ) }\n' )
        resize  = img .resize(  ( event .width +border,  event .height +border ),  Image .ANTIALIAS  )
        bg  = ImageTk .PhotoImage( image = resize )
        canvas .config( image = bg,  width = event .width,  height = event .height )
    
    root .bind( '<Configure>', resizer )
    root .mainloop()
    
    ##  eof  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    

    Create circular image PIL Tkinter

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-12-05
      • 1970-01-01
      • 2021-03-09
      • 2018-09-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多