goo blog サービス終了のお知らせ 

パーソナルブログメモリ

a = [1, 1]
for _ in "*" * 999: a += [sum(a[-2:])]
print(a)

Python Flet Canvas 少しずつ何かつかめてくる

2025-02-21 | Python Flet

色を使ってみる実験から

flet.Colorsのクラスの変数を取得

色の定数っぽいものをページの背景にして表示

 

 

ソースリスト

import flet as ft

def main(page: ft.Page):
    colors=s.replace("'","").replace(" ","").split(",")
    print(colors,len(colors))

    for y in range(20):
        page.add(
            ft.Container(
                width=200,
                height=10,
                border=ft.border.all(1, ft.Colors.BLACK),
                content=ft.FilledButton("Primary color"),
                theme=ft.Theme(color_scheme=ft.ColorScheme(primary=getattr(ft.Colors, colors.pop(0))))
            )
        )
    #print(vars(ft.Colors))

s="""'WHITE10', 'WHITE12', 'WHITE24', 'WHITE30', 'WHITE38', 'WHITE54', 'WHITE60', 'WHITE70', 'WHITE', 'TRANSPARENT', 'BLACK12', 'BLACK26', 'BLACK38', 'BLACK45', 'BLACK54', 'BLACK87', 'BLACK', 'RED', 'RED_50', 'RED_100', 'RED_200', 'RED_300', 'RED_400', 'RED_500', 'RED_600', 'RED_700', 'RED_800', 'RED_900', 'PINK', 'PINK_50', 'PINK_100', 'PINK_200', 'PINK_300', 'PINK_400', 'PINK_500', 'PINK_600', 'PINK_700', 'PINK_800', 'PINK_900', 'PURPLE', 'PURPLE_50', 'PURPLE_100', 'PURPLE_200', 'PURPLE_300', 'PURPLE_400', 'PURPLE_500', 'PURPLE_600', 'PURPLE_700', 'PURPLE_800', 'PURPLE_900', 'DEEP_PURPLE', 'DEEP_PURPLE_50', 'DEEP_PURPLE_100', 'DEEP_PURPLE_200', 'DEEP_PURPLE_300', 'DEEP_PURPLE_400', 'DEEP_PURPLE_500', 'DEEP_PURPLE_600', 'DEEP_PURPLE_700', 'DEEP_PURPLE_800', 'DEEP_PURPLE_900', 'INDIGO', 'INDIGO_50', 'INDIGO_100', 'INDIGO_200', 'INDIGO_300', 'INDIGO_400', 'INDIGO_500', 'INDIGO_600', 'INDIGO_700', 'INDIGO_800', 'INDIGO_900', 'BLUE', 'BLUE_50', 'BLUE_100', 'BLUE_200', 'BLUE_300', 'BLUE_400', 'BLUE_500', 'BLUE_600', 'BLUE_700', 'BLUE_800', 'BLUE_900', 'LIGHT_BLUE', 'LIGHT_BLUE_50', 'LIGHT_BLUE_100', 'LIGHT_BLUE_200', 'LIGHT_BLUE_300', 'LIGHT_BLUE_400', 'LIGHT_BLUE_500', 'LIGHT_BLUE_600', 'LIGHT_BLUE_700', 'LIGHT_BLUE_800', 'LIGHT_BLUE_900', 'CYAN', 'CYAN_50', 'CYAN_100', 'CYAN_200', 'CYAN_300', 'CYAN_400', 'CYAN_500', 'CYAN_600', 'CYAN_700', 'CYAN_800', 'CYAN_900', 'TEAL', 'TEAL_50', 'TEAL_100', 'TEAL_200', 'TEAL_300', 'TEAL_400', 'TEAL_500', 'TEAL_600', 'TEAL_700', 'TEAL_800', 'TEAL_900', 'GREEN', 'GREEN_50', 'GREEN_100', 'GREEN_200', 'GREEN_300', 'GREEN_400', 'GREEN_500', 'GREEN_600', 'GREEN_700', 'GREEN_800', 'GREEN_900', 'LIGHT_GREEN', 'LIGHT_GREEN_50', 'LIGHT_GREEN_100', 'LIGHT_GREEN_200', 'LIGHT_GREEN_300', 'LIGHT_GREEN_400', 'LIGHT_GREEN_500', 'LIGHT_GREEN_600', 'LIGHT_GREEN_700', 'LIGHT_GREEN_800', 'LIGHT_GREEN_900', 'LIME', 'LIME_50', 'LIME_100', 'LIME_200', 'LIME_300', 'LIME_400', 'LIME_500', 'LIME_600', 'LIME_700', 'LIME_800', 'LIME_900', 'YELLOW', 'YELLOW_50', 'YELLOW_100', 'YELLOW_200', 'YELLOW_300', 'YELLOW_400', 'YELLOW_500', 'YELLOW_600', 'YELLOW_700', 'YELLOW_800', 'YELLOW_900', 'AMBER', 'AMBER_50', 'AMBER_100', 'AMBER_200', 'AMBER_300', 'AMBER_400', 'AMBER_500', 'AMBER_600', 'AMBER_700', 'AMBER_800', 'AMBER_900', 'ORANGE', 'ORANGE_50', 'ORANGE_100', 'ORANGE_200', 'ORANGE_300', 'ORANGE_400', 'ORANGE_500', 'ORANGE_600', 'ORANGE_700', 'ORANGE_800', 'ORANGE_900', 'DEEP_ORANGE', 'DEEP_ORANGE_50', 'DEEP_ORANGE_100', 'DEEP_ORANGE_200', 'DEEP_ORANGE_300', 'DEEP_ORANGE_400', 'DEEP_ORANGE_500', 'DEEP_ORANGE_600', 'DEEP_ORANGE_700', 'DEEP_ORANGE_800', 'DEEP_ORANGE_900', 'BROWN', 'BROWN_50', 'BROWN_100', 'BROWN_200', 'BROWN_300', 'BROWN_400', 'BROWN_500', 'BROWN_600', 'BROWN_700', 'BROWN_800', 'BROWN_900', 'BLUE_GREY', 'BLUE_GREY_50', 'BLUE_GREY_100', 'BLUE_GREY_200', 'BLUE_GREY_300', 'BLUE_GREY_400', 'BLUE_GREY_500', 'BLUE_GREY_600', 'BLUE_GREY_700', 'BLUE_GREY_800', 'BLUE_GREY_900', 'RED_ACCENT', 'RED_ACCENT_100', 'RED_ACCENT_200', 'RED_ACCENT_400', 'RED_ACCENT_700', 'PINK_ACCENT', 'PINK_ACCENT_100', 'PINK_ACCENT_200', 'PINK_ACCENT_400', 'PINK_ACCENT_700', 'PURPLE_ACCENT', 'PURPLE_ACCENT_100', 'PURPLE_ACCENT_200', 'PURPLE_ACCENT_400', 'PURPLE_ACCENT_700', 'DEEP_PURPLE_ACCENT', 'DEEP_PURPLE_ACCENT_100', 'DEEP_PURPLE_ACCENT_200', 'DEEP_PURPLE_ACCENT_400', 'DEEP_PURPLE_ACCENT_700', 'INDIGO_ACCENT', 'INDIGO_ACCENT_100', 'INDIGO_ACCENT_200', 'INDIGO_ACCENT_400', 'INDIGO_ACCENT_700', 'BLUE_ACCENT', 'BLUE_ACCENT_100', 'BLUE_ACCENT_200', 'BLUE_ACCENT_400', 'BLUE_ACCENT_700', 'LIGHT_BLUE_ACCENT', 'LIGHT_BLUE_ACCENT_100', 'LIGHT_BLUE_ACCENT_200', 'LIGHT_BLUE_ACCENT_400', 'LIGHT_BLUE_ACCENT_700', 'CYAN_ACCENT', 'CYAN_ACCENT_100', 'CYAN_ACCENT_200', 'CYAN_ACCENT_400', 'CYAN_ACCENT_700', 'TEAL_ACCENT', 'TEAL_ACCENT_100', 'TEAL_ACCENT_200', 'TEAL_ACCENT_400', 'TEAL_ACCENT_700', 'GREEN_ACCENT', 'GREEN_ACCENT_100', 'GREEN_ACCENT_200', 'GREEN_ACCENT_400', 'GREEN_ACCENT_700', 'LIGHT_GREEN_ACCENT', 'LIGHT_GREEN_ACCENT_100', 'LIGHT_GREEN_ACCENT_200', 'LIGHT_GREEN_ACCENT_400', 'LIGHT_GREEN_ACCENT_700', 'LIME_ACCENT', 'LIME_ACCENT_100', 'LIME_ACCENT_200', 'LIME_ACCENT_400', 'LIME_ACCENT_700', 'YELLOW_ACCENT', 'YELLOW_ACCENT_100', 'YELLOW_ACCENT_200', 'YELLOW_ACCENT_400', 'YELLOW_ACCENT_700', 'AMBER_ACCENT', 'AMBER_ACCENT_100', 'AMBER_ACCENT_200', 'AMBER_ACCENT_400', 'AMBER_ACCENT_700', 'ORANGE_ACCENT', 'ORANGE_ACCENT_100', 'ORANGE_ACCENT_200', 'ORANGE_ACCENT_400', 'ORANGE_ACCENT_700', 'DEEP_ORANGE_ACCENT', 'DEEP_ORANGE_ACCENT_100', 'DEEP_ORANGE_ACCENT_200', 'DEEP_ORANGE_ACCENT_400', 'DEEP_ORANGE_ACCENT_700', 'GREY', 'GREY_50', 'GREY_100', 'GREY_200', 'GREY_300', 'GREY_400', 'GREY_500', 'GREY_600', 'GREY_700', 'GREY_800', 'GREY_900'"""

ft.app(main)

 

 

 

Canvasにいろいろな図形をサンプルから貼り付けて表示してみる

 

Canvasはいろいろな環境でも使い方に一番苦労するイメージがあります

 

ソースリスト

import math
import flet as ft
import flet.canvas as cv


def main(page: ft.Page):
    page.title = "Canvas に図形を描く & コピーする"

    stroke_paint = paint = ft.Paint(stroke_width=2, style=ft.PaintingStyle.STROKE, color=ft.Colors.BLACK)
    fill_paint = paint = ft.Paint(style=ft.PaintingStyle.FILL)
    # 元のキャンバス
    cp = cv.Canvas(
        [
            #cv.Fill(),
            cv.Circle(0, 0, 200, ft.Paint(color=ft.Colors.YELLOW)),
            cv.Circle(50, 50, 50, ft.Paint(color=ft.colors.RED)),  # 赤い円
            cv.Rect(20, 20, 40, 40, ft.Paint(color=ft.colors.WHITE)),  # 緑の四角
            cv.Circle(100, 100, 50, stroke_paint),
            cv.Circle(80, 90, 10, stroke_paint),
            cv.Circle(84, 87, 5, fill_paint),
            cv.Circle(120, 90, 10, stroke_paint),
            cv.Circle(124, 87, 5, fill_paint),
            cv.Arc(70, 95, 60, 40, 0, math.pi, paint=stroke_paint),
            cv.Text(
                200,
                100,
                "Rotated",
                ft.TextStyle(weight=ft.FontWeight.BOLD, size=30),
                spans=[
                    ft.TextSpan(
                        "around top_center",
                        ft.TextStyle(italic=True, color=ft.Colors.GREEN, size=20),
                    )
                ],
                alignment=ft.alignment.top_center,
                rotate=math.pi * 0.15,
            ),
        ],
        width=float("inf"),
        expand=True,
    )

    # 横に並べる
    #page.add(ft.Row([canvas1, canvas2]))
    page.add(ft.Row([cp, cp]))

ft.app(target=main)


最新の画像もっと見る

コメントを投稿

ブログ作成者から承認されるまでコメントは反映されません。