Python GUI tkinter库 自学10

Canvas 画布组件

  • 1、一个经典的面向程序写法模块
  • 2、画布组件(Canvas)
  • 3、随机画 10 个矩形
  • 4、源代码

1、一个经典的面向程序写法模块

from tkinter import *
from tkinter import messagebox
# 导入库文件

class Appication(Frame):
    """
    一个经典的 GUI 类的写法
    """
    # 定义类(Appication)、继承于 Frame 框架 (虚拟的矩形框架)
    def __init__(self, master = None):
        # 定义构造函数、并初始化父类为空
        super().__init__(master)
        # 通过 super() 调用父类、并将 master 传进去
        self.master = master
        # 令此类中的 master 等于传入的 window
        self.pack()
        # 布局此窗口

        self.CreateWidget()
        # 调用另一个函数 CreateWidget

    def CreateWidget(self):
        """
        用途:创建组件
        """
        ......
        ......
       

if __name__ == "__main__":
    window = Tk()
    # 创建主窗口
    window.geometry("500x200+200+200")
    window.title('一个经典的GUI程序')
    # 对窗口进行大小、位置及名字设置

    app = Appication(master = window)
    # 调用新创建的类、并进行初始化、将 master = window (主窗口)传递进去

    window.mainloop()
    # 调用 mainloop 方法、启用窗口并进入事件循环

2、画布组件(Canvas)

# class Appication(Frame):
#     """
#     一个经典的 GUI 类的写法
#     """
    def CreateWidget(self):
        """
        用途:创建组件
        """
        self.canvas = Canvas(self, width = 300, height = 300, bg = "green")
        self.canvas.pack()
        # 画一条直线
        line = self.canvas.create_line(10, 10, 20, 20, 30, 30, 40, 90)
        # 画一个矩形
        rect = self.canvas.create_rectangle(10, 10, 100, 100)
        # 画一个椭圆
        oval = self.canvas.create_oval(10, 10, 100, 100)

        global photo
        photo = PhotoImage(file = "image\\xiaohan.gif")
        self.canvas.create_image(200, 200, image = photo)

3、随机画 10 个矩形

# class Appication(Frame):
#     """
#     一个经典的 GUI 类的写法
#     """
    def CreateWidget(self):
    """
    用途:创建组件
    """
        Button(self, text = "画 10 个矩形", command = self.draw10Rectangle).pack(side = "left")

    def draw10Rectangle(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)

4、源代码

from tkinter import *
from tkinter import messagebox
import random
# 导入库文件


class Appication(Frame):
    """
    一个经典的 GUI 类的写法
    """
    def __init__(self, master = None):
        # 定义构造函数、并初始化父类为空
        super().__init__(master)
        # 通过 super() 调用父类、并将 master 传进去
        self.master = master
        # 令此类中的 master 等于传入的 window
        self.pack()
        # 布局此窗口

        self.CreateWidget()
        # 调用另一个函数 CreateWidget

    def CreateWidget(self):
        """
        用途:创建组件
        """
        self.canvas = Canvas(self, width = 300, height = 300, bg = "green")
        self.canvas.pack()
        # 画一条直线
        line = self.canvas.create_line(10, 10, 20, 20, 30, 30, 40, 90)
        # 画一个矩形
        rect = self.canvas.create_rectangle(10, 10, 100, 100)
        # 画一个椭圆
        oval = self.canvas.create_oval(10, 10, 100, 100)

        global photo
        photo = PhotoImage(file = "image\\xiaohan.gif")
        self.canvas.create_image(200, 200, image = photo)

        Button(self, text = "画 10 个矩形", command = self.draw10Rectangle).pack(side = "left")

    def draw10Rectangle(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__":
    window = Tk()
    # 创建主窗口
    window.geometry("600x600+100+100")
    window.title('一个经典的GUI程序')
    # 对窗口进行大小、位置及名字设置

    app = Appication(master = window)
    # 调用新创建的类、并进行初始化、将 master = window (主窗口)传递进去

    window.mainloop()
    # 调用 mainloop 方法、启用窗口并进入事件循环

你可能感兴趣的:(Python,GUI,tkinter,库,gui,canvas,tkinter,window)