PythonのTreeviewウィジェットを使ってタートルグラフィックスでサイクロイド、アステロイド、カージオイド、カテナリー曲線を選択させて描画するプログラムを書いて
以下は、PythonのTkinterライブラリを使用して、Treeviewウィジェットを作成し、選択された図形を描画するサンプルプログラムです。このプログラムは、タートルグラフィックスを使用して、サイクロイド、アステロイド、カージオイド、カテナリー曲線を描画します。
import tkinter as tk
import turtle
class CurveDrawer:
def __init__(self, master):
self.master = master
self.master.title('Curve Drawer')
# Treeview widget
self.tree = tk.ttk.Treeview(master)
self.tree.heading('#0', text='Curves')
self.tree.pack(side=tk.LEFT, fill=tk.Y)
# Add items to the tree
curves = ['Cycloid', 'Astroid', 'Cardioid', 'Catenary']
for curve in curves:
self.tree.insert('', 'end', text=curve)
# Bind selection event
self.tree.bind('<ButtonRelease-1>', self.draw_curve)
# Canvas for turtle graphics
self.canvas = tk.Canvas(master, width=500, height=500)
self.canvas.pack(side=tk.RIGHT)
# Create turtle object
self.t = turtle.RawTurtle(self.canvas)
self.t.speed('fastest')
self.t.hideturtle()
self.t.penup()
def draw_curve(self, event):
# Get selected item
item = self.tree.focus()
# Clear canvas
self.canvas.delete('all')
# Draw curve
if item == self.tree.children(''):
return
curve = self.tree.item(item)['text']
if curve == 'Cycloid':
self.draw_cycloid()
elif curve == 'Astroid':
self.draw_astroid()
elif curve == 'Cardioid':
self.draw_cardioid()
elif curve == 'Catenary':
self.draw_catenary()
def draw_cycloid(self):
# Draw cycloid
self.t.goto(0, 0)
self.t.pendown()
for t in range(0, 720, 2):
x = 50*(t/180 - 2*math.pi*math.sin(t/180))
y = 50*(1 - 2*math.pi*math.cos(t/180))
self.t.goto(x, y)
self.t.penup()
def draw_astroid
・・・バックレましたwww
(゚Д゚)ゴルァ!!