"""测试Canvas组件的基本用法,使用面向对象的方式"""
from tkinter import *
from tkinter import messagebox
import random
class Application(Frame):
    def __init__(self,master):
        super().__init__(master)
        self.master=master
        self.pack()
        self.createWidget()
    def createWidget(self):
        self.canvas=Canvas(self,width=300,height=200,bg='green')
        self.canvas.pack()
        # 画一条直线
        line=self.canvas.create_line(10,10,20,20,35,34)
        # 画一个矩形
        rect=self.canvas.create_rectangle(50,50,100,100)
        # 画一个圆
        oval=self.canvas.create_oval(50,50,100,100)
        global photo
        photo=PhotoImage(file="d:/百战程序员/GUI图形用户界面编程/登录.gif")
        self.canvas.create_image(150,170,image=photo)
        Button(self,text="画10个矩形",command=self.draw50Recg).pack(side="left")
    def draw50Recg(self):
        for i in range(0,10):
            x1=random.randrange(int(self.canvas["width"])/2)
            y1=random.randrange(int(self.canvas["height"])/2)
            x2=x1+random.randrange(int(self.canvas["width"])/2)
            y2=y1+random.randrange(int(self.canvas["height"])/2)
            self.canvas.create_rectangle(x1,x2,y1,y2)
if __name__=="__main__":
    root=Tk()
    root.geometry("500x500+300+200")
    app=Application(master=root)
    root.mainloop()

 这三行没有正常运行,但是和教程上的一致。