"""测试Canvas组件的基本用法,使用面向对象的方式"""
from tkinter import *
from tkinter import messagebox
import random
class Application(Frame):
def __init__(self, master=None):
super().__init__(master) # super()代表的是父类的定义,而不是父类的对象
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,30,20,40,50)
# 画一个矩形
rect = self.canvas.create_retangle(50,50,100,100)
# 画一个椭圆,坐标两双。为椭圆的边界举行左上角和底部右下角
oval = self.canvas.create_oval(50,50,100,100)
global photo
photo = PhotoImage(file="imgs/logo.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,y1,x2,y2)
if __name__ == '__main__':
root = Tk()
root.geometry("400x300+200+300")
app = Application(master=root)
root.mainloop()
D:\python_env\gui\Scripts\python.exe C:/Users/邹霖/PycharmProjects/gui/venv/my09.py
Traceback (most recent call last):
File "C:\Users\邹霖\PycharmProjects\gui\venv\my09.py", line 9, in <module>
class Application(Frame):
File "C:\Users\邹霖\PycharmProjects\gui\venv\my09.py", line 13, in Application
self.master = master
NameError: name 'master' is not defined. Did you mean: 'aiter'?
又遇到这个错误,咋办?