用python在一个图形界面画三角形,四棱形和五棱星
时间: 2024-05-13 07:17:35 浏览: 130
可以使用Python中的Tkinter库来实现图形界面的绘制。以下是一个简单的示例代码,可以在窗口中绘制三角形、四棱形和五棱星:
```python
import tkinter as tk
import math
class DrawingApp:
def __init__(self, master):
self.master = master
master.title("Drawing App")
self.canvas = tk.Canvas(master, width=400, height=400)
self.canvas.pack()
# 坐标系原点
self.origin = (200, 200)
# 画三角形
self.draw_triangle()
# 画四棱形
self.draw_square()
# 画五棱星
self.draw_star()
def draw_triangle(self):
# 三角形的三个顶点坐标
points = [(0, -50), (50, 50), (-50, 50)]
# 将三角形顶点坐标转换为画布坐标
coords = [(self.origin[0]+x, self.origin[1]-y) for x, y in points]
# 在画布上绘制三角形
self.canvas.create_polygon(coords, outline='black', fill='white')
def draw_square(self):
# 四棱形的四个顶点坐标
points = [(50, -50), (50, 50), (-50, 50), (-50, -50)]
# 将四棱形顶点坐标转换为画布坐标
coords = [(self.origin[0]+x, self.origin[1]-y) for x, y in points]
# 在画布上绘制四棱形
self.canvas.create_polygon(coords, outline='black', fill='white')
def draw_star(self):
# 五棱星的五个顶点坐标
points = [(0, -50), (30, -15), (50, 40), (-50, 40), (-30, -15)]
# 将五棱星顶点坐标转换为画布坐标
coords = [(self.origin[0]+x, self.origin[1]-y) for x, y in points]
# 计算五棱星内部的五个顶点坐标
inner_points = [(coords[i][0] + coords[(i+2)%5][0])/2,
(coords[i][1] + coords[(i+2)%5][1])/2
for i in range(5)]
# 将五棱星内部顶点坐标转换为画布坐标
inner_coords = [(self.origin[0]+x, self.origin[1]-y) for x, y in inner_points]
# 在画布上绘制五棱星
self.canvas.create_polygon(coords, outline='black', fill='white')
self.canvas.create_polygon(inner_coords, outline='black', fill='white')
root = tk.Tk()
app = DrawingApp(root)
root.mainloop()
```
在这个示例中,我们创建了一个名为`DrawingApp`的类,它包含三个方法:`draw_triangle()`、`draw_square()`和`draw_star()`,分别用于绘制三角形、四棱形和五棱星。
每个方法都使用`create_polygon()`方法在画布上绘制多边形。在绘制之前,我们需要将多边形的顶点坐标从相对于图形中心的坐标转换为相对于画布原点的坐标。
对于五棱星,我们还需要计算五个内部顶点的坐标,并将其也转换为画布坐标。我们使用了一些简单的三角函数来计算这些内部顶点的坐标。
最后,在主函数中创建一个`DrawingApp`对象,并使用`mainloop()`方法显示窗口。
阅读全文