CyberChaos(さいばかおす)

プログラミング言語、トランスパイラ、RPA、ChatGPT、データマイニング、リバースエンジニアリングのための忘備録

PythonのTreeviewウィジェットを使った各種曲線の選択描画

2023-03-07 23:06:52 | python
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
(゚Д゚)ゴルァ!!


最新の画像もっと見る