GUI中Canvas

2021-01-10  本文已影响0人  Chaweys

#coding=utf-8
from tkinter import *
import random

class Application(Frame):
    def __init__(self,master=None):
        super().__init__(master)
        self.pack()
        self.createWidget()

    def createWidget(self):
        #创建画布
        self.c1=Canvas(self,width=300,height=200,bg="green")
        self.c1.pack()

        #画直线
        '''
        前两个10,10代表坐标(10,10),中间两个20,20代表坐标(20,20),后两个30,40代表(30,40)
        画直线就是将这些坐标连接起来
        '''
        self.c1.create_line(10,10,20,20,30,40)

        #画矩形
        '''
        前两个50,50代表坐标(50,50),后两个100,100代表坐标(100,100)
        画矩形就是找到左上角的坐标和右下角的坐标,然后连接起来
        '''
        self.c1.create_rectangle(50,50,100,100)

        #画椭圆形
        '''
        前两个50,50代表坐标(50,50),后两个100,100代表坐标(100,100)
        画椭圆形就是找到矩形左上角的坐标和右下角的坐标,然后再矩形形状下画切片圆
        '''
        self.c1.create_oval(50,50,100,100)


        #画布中添加图片
        #要定义photo对象为全局变量才可以引用,或者定义为当前对象的self.photo=PhotoImage()
        global photo
        photo=PhotoImage(file="./imgs/logo.gif")
        self.c1.create_image(150,170,image=photo)  #注:添加图片也要传入坐标值指定位置添加,否则报错:IndexError: tuple index out of range


        #创建按钮
        self.b1=Button(self,text="画10个矩形",command=self.createRectangle)
        self.b1.pack(side="left")

    #画10个矩形方法
    def createRectangle(self):
        for i in range(10):
            x1=random.randrange(int(self.c1["width"])/2)
            y1=random.randrange(int(self.c1["height"])/2)
            x2=x1+random.randrange(int(self.c1["width"])/2)
            y2=y1+random.randrange(int(self.c1["height"])/2)

            self.c1.create_rectangle(x1,y1,x2,y2)



if __name__=="__main__":
    root=Tk()
    root.title("画布组件canvas")
    root.geometry("400x300+200+300")
    app=Application(root)
    root.mainloop()
canvas画布1.png
canvas画布2.png
上一篇下一篇

猜你喜欢

热点阅读