ToPY-用于拓扑优化的开源PYTHON框架
发布时间:2024-05-06 04:59:19 点击量:
以下是实现这个功能的代码示例:
```python
from tkinter import *
# 定义全局变量
curRadius=50
# 定义绘制圆形的函数
def drawCircle(event):
# 获取鼠标单击的位置
x, y=event.x, event.y
# 根据鼠标位置确定颜色
if x < 250 and y < 250:
color="red"
elif x >=250 and y < 250:
color="yellow"
elif x < 250 and y >=250:
color="green"
else:
color="blue"
# 绘制圆形
leftX=x - curRadius
topY=y - curRadius
rightX=x + curRadius
bottomY=y + curRadius
frame.create_oval(leftX, topY, rightX, bottomY, fill=color)
# 定义按键事件函数
def changeRadius(event):
global curRadius
if event.keysym=="Up":
curRadius +=5
elif event.keysym=="Down":
curRadius -=5
if curRadius < 5:
curRadius=5
# 创建主窗口和画布
root=Tk()
frame=Canvas(root, width=500, height=500)
frame.pack()
# 绑定鼠标单击事件和按键事件
frame.bind("<Button-1>", drawCircle)
frame.bind("<KeyPress>", changeRadius)
frame.focus_set()
root.mainloop()
```
在这个代码中,我们首先定义了一个全局变量`curRadius`,用于表示圆的半径。然后定义了两个函数`drawCircle`和`changeRadius`,分别用于绘制圆形和改变半径。`drawCircle`函数接收一个事件参数,获取鼠标单击的位置,并根据位置确定圆的颜色,然后调用`frame.create_oval`函数绘制圆形。`changeRadius`函数接收一个按键事件参数,根据按键来增加或减少半径。
在主程序中,我们创建了主窗口和画布,并把画布绑定了鼠标单击事件和按键事件。最后调用`root.mainloop()`启动主循环,让程序进入事件循环。