美文网首页
GUI中Canvas

GUI中Canvas

作者: Chaweys | 来源:发表于2021-01-10 11:48 被阅读0次

    #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

    相关文章

      网友评论

          本文标题:GUI中Canvas

          本文链接:https://www.haomeiwen.com/subject/rfukaktx.html