我目前正在使用Tkinter工作的交互式GUI,它可以使用BMP图像。基本上,我希望能够单击一个按钮,然后允许用户在图像上指定任意三个点,然后生成最佳拟合椭圆并返回椭圆内的最小值。
我能够制作BMP图像,但是我不知道如何制作带图像的按钮。我该怎么做呢?
单击按钮后,它将执行一个功能,将鼠标光标更改为十字准线,然后在图像上的任意三个点上单击并将它们保存到变量中,我将在以后生成该变量以生成椭圆。我希望点击产生一个红点来表示它的位置。
这是我的代码:
from tkinter import *
from PIL import Image, ImageTk
def bmpGUI():
top=Tk()
top.title("BMP Image")
image = Image.open("ap41.ddr.brf.sdat.bmp")
widthBMP, heightBMP = image.size
tkimage = ImageTk.PhotoImage(image)
w = Canvas(top, width=widthBMP+200, height=heightBMP)
w.create_image((widthBMP/2,heightBMP/2),image=tkimage)
w.pack()
top.mainloop()
return
def main():
bmpGUI()
if __name__ == "__main__":
main()
我在宽度上添加了200px,以表明我想在图像旁边放置一个交互式侧边栏。
答案 0 :(得分:0)
我建议为画布使用比w
更有用的变量名称,为了使其工作,画布需要全局化
tkimage.configure(cursor="plus")
w.bind("<Button-1>", imgClick)
pos = []
def imgClick(e):
x=w.canvasx(e.x)
y=w.canvasy(e.y)
pos.append((x,y))
w.create_line(x-5,y,x+5,y, fill="red", tags="crosshair")
w.create_line(x,y-5,x,y+5, fill="red", tags="crosshair")
当你拥有所有3个职位时,你可以使用w.delete("crosshair")
。