Python'da flet kütüphanesinde sınıf içerisinden diyalog gösterme

Katılım
27 Nisan 2022
Mesajlar
1.637
Çözümler
15
Daha fazla  
Cinsiyet
Erkek
Kodum bu. Şimdi benim yapmak istediğim Info butona tıkladığımızda tam olarak buradakilerin olması.
Yani open_dlg fonksiyonunun maindeki page a erişmesi lazım. Anlayanlar varsa yardımcı olabilirmi?


Python:
import flet
from flet import Page, UserControl, Column, Container, colors, border_radius, padding, Text, Row, ElevatedButton, icons, \
    IconButton, Dropdown, dropdown, FontWeight, AlertDialog


def inf_on_click(page: Page):
    pass


class App(UserControl):
    def __init__(self, style):
        super().__init__()
        self.style = style

    def build(self):
        return Column(
            controls=[
                Container(
                    bgcolor=self.style["bg-color"],
                    width=450,
                    height=550,
                    border_radius=self.style["border-radius"],

                    content=(
                        Column(
                            alignment=flet.MainAxisAlignment.CENTER,
                            horizontal_alignment=flet.CrossAxisAlignment.CENTER,
                            controls=[
                                Container(
                                    width=430,
                                    height=530,

                                    content=(
                                        Column(

                                            controls=[

                                                Row(

                                                    expand=True,
                                                    alignment=flet.MainAxisAlignment.CENTER,
                                                    vertical_alignment=flet.CrossAxisAlignment.START,

                                                    controls=[
                                                        Column(
                                                            expand=True,
                                                            alignment=flet.MainAxisAlignment.START,
                                                            horizontal_alignment=flet.CrossAxisAlignment.START,
                                                            controls=[
                                                                IconButton(
                                                                    icon=icons.INFO,
                                                                    scale=0.8,

                                                                )
                                                            ]
                                                        ),
                                                        Column(
                                                            expand=True,
                                                            width=175,
                                                            alignment=flet.MainAxisAlignment.START,
                                                            horizontal_alignment=flet.CrossAxisAlignment.CENTER,
                                                            controls=[
                                                                Text("Hello!",
                                                                     size=25,

                                                                     )
                                                            ]

                                                        ),
                                                        Column(
                                                            expand=True
                                                        ),

                                                    ]
                                                ),
                                                Row(
                                                    expand=True,
                                                    alignment=flet.MainAxisAlignment.CENTER,
                                                    controls=[
                                                        ElevatedButton(
                                                            text="Start Installation",
                                                            icon=icons.ARROW_RIGHT,
                                                            color=self.style["text-color"],
                                                            scale=1.2
                                                        )
                                                    ]
                                                ),
                                                Row(
                                                    expand=True,
                                                    alignment=flet.MainAxisAlignment.CENTER,
                                                    vertical_alignment=flet.CrossAxisAlignment.START,
                                                    controls=[
                                                        Column(
                                                            expand=True,
                                                            alignment=flet.MainAxisAlignment.END,
                                                            horizontal_alignment=flet.CrossAxisAlignment.START,
                                                            controls=[
                                                                IconButton(
                                                                    icon=icons.POWER_SETTINGS_NEW,
                                                                    scale=1.3,
                                                                    tooltip="Shutdown",

                                                                )
                                                            ]
                                                        ),
                                                        Column(
                                                            width=175,

                                                            alignment=flet.MainAxisAlignment.END,
                                                            horizontal_alignment=flet.CrossAxisAlignment.CENTER,
                                                            controls=[
                                                                Dropdown(
                                                                    width=200,
                                                                    height=45,

                                                                    tooltip="Select Language",
                                                                    hint_text="Select Language",
                                                                    hint_style=flet.TextStyle(size=15),

                                                                    options=[
                                                                        dropdown.Option("English")
                                                                    ]
                                                                )

                                                            ]
                                                        ),
                                                        Column(expand=True,
                                                               alignment=flet.MainAxisAlignment.END,
                                                               horizontal_alignment=flet.CrossAxisAlignment.END,
                                                               controls=[
                                                                   IconButton(
                                                                       icon=icons.ARROW_RIGHT_ALT,
                                                                       tooltip="Use arch in archiso enviroment(Live CD)",
                                                                       scale=1.3
                                                                   )
                                                               ]
                                                               ),

                                                    ]
                                                )
                                            ]
                                        )
                                    )
                                )
                            ]
                        )

                    )

                )
            ]

        )


def main(page: Page):
    page.title = "EasyArch Utily"
    page.window_height = 600
    page.window_width = 500
    dlg = AlertDialog(
        title=Text("Hello, you!")
    )

    style = {
        "text-color": colors.WHITE,
        "secondary-bg-color": colors.WHITE60,
        "bg-color": colors.BLACK12,
        "border-radius": 8
    }
    app = App(style)
    page.add(app)
    page.vertical_alignment = "center"
    page.horizontal_alignment = "center"

    page.update()


flet.app(main)

Ve evet bir arch linux kurulum aracı yazıyorum. Temel fonksiyonlar tamam. Sadece ui kaldı.
 
Kodum bu. Şimdi benim yapmak istediğim Info butona tıkladığımızda tam olarak buradakilerin olması.

AlertDialog | Flet

A material design alert dialog.
flet.dev
flet.dev
Yani open_dlg fonksiyonunun maindeki page a erişmesi lazım. Anlayanlar varsa yardımcı olabilirmi?


Python:panoya kopyala
import flet
from flet import Page, UserControl, Column, Container, colors, border_radius, padding, Text, Row, ElevatedButton, icons, \
IconButton, Dropdown, dropdown, FontWeight, AlertDialog


def inf_on_click(page: Page):
pass


class App(UserControl):
def init(self, style):
super().init()
self.style = style

def build(self):
return Column(
controls=[
Container(
bgcolor=self.style["bg-color"],
width=450,
height=550,
border_radius=self.style["border-radius"],

content=(
Column(
alignment=flet.MainAxisAlignment.CENTER,
horizontal_alignment=flet.CrossAxisAlignment.CENTER,
controls=[
Container(
width=430,
height=530,

content=(
Column(

controls=[

Row(

expand=True,
alignment=flet.MainAxisAlignment.CENTER,
vertical_alignment=flet.CrossAxisAlignment.START,

controls=[
Column(
expand=True,
alignment=flet.MainAxisAlignment.START,
horizontal_alignment=flet.CrossAxisAlignment.START,
controls=[
IconButton(
icon=icons.INFO,
scale=0.8,

)
]
),
Column(
expand=True,
width=175,
alignment=flet.MainAxisAlignment.START,
horizontal_alignment=flet.CrossAxisAlignment.CENTER,
controls=[
Text("Hello!",
size=25,

)
]

),
Column(
expand=True
),

]
),
Row(
expand=True,
alignment=flet.MainAxisAlignment.CENTER,
controls=[
ElevatedButton(
text="Start Installation",
icon=icons.ARROW_RIGHT,
color=self.style["text-color"],
scale=1.2
)
]
),
Row(
expand=True,
alignment=flet.MainAxisAlignment.CENTER,
vertical_alignment=flet.CrossAxisAlignment.START,
controls=[
Column(
expand=True,
alignment=flet.MainAxisAlignment.END,
horizontal_alignment=flet.CrossAxisAlignment.START,
controls=[
IconButton(
icon=icons.POWER_SETTINGS_NEW,
scale=1.3,
tooltip="Shutdown",

)
]
),
Column(
width=175,

alignment=flet.MainAxisAlignment.END,
horizontal_alignment=flet.CrossAxisAlignment.CENTER,
controls=[
Dropdown(
width=200,
height=45,

tooltip="Select Language",
hint_text="Select Language",
hint_style=flet.TextStyle(size=15),

options=[
dropdown.Option("English")
]
)

]
),
Column(expand=True,
alignment=flet.MainAxisAlignment.END,
horizontal_alignment=flet.CrossAxisAlignment.END,
controls=[
IconButton(
icon=icons.ARROW_RIGHT_ALT,
tooltip="Use arch in archiso enviroment(Live CD)",
scale=1.3
)
]
),

]
)
]
)
)
)
]
)

)

)
]

)


def main(page: Page):
page.title = "EasyArch Utily"
page.window_height = 600
page.window_width = 500
dlg = AlertDialog(
title=Text("Hello, you!")
)

style = {
"text-color": colors.WHITE,
"secondary-bg-color": colors.WHITE60,
"bg-color": colors.BLACK12,
"border-radius": 8
}
app = App(style)
page.add(app)
page.vertical_alignment = "center"
page.horizontal_alignment = "center"

page.update()


flet.app(main)

Ve evet bir arch linux kurulum aracı yazıyorum. Temel fonksiyonlar tamam. Sadece ui kaldı.


Python:
import flet
from flet import Page, UserControl, Column, Container, colors, border_radius, padding, Text, Row, ElevatedButton, icons, \
    IconButton, Dropdown, dropdown, FontWeight, AlertDialog



uyari = flet.AlertDialog(
        title=flet.Text("Oldu gibi"), on_dismiss=lambda e: print("Dialog dismissed!")
    )
       

def inf_on_click(_: flet.ControlEvent):
    page = _.control.data# istediğin sayfa
    page.dialog = uyari
    uyari.open = True
    page.update()
   
   


class App(UserControl):
    def __init__(self, style):
        super().__init__()
        self.style = style

    def build(self):
        return Column(
            controls=[
                Container(
                    bgcolor=self.style["bg-color"],
                    width=450,
                    height=550,
                    border_radius=self.style["border-radius"],

                    content=(
                        Column(
                            alignment=flet.MainAxisAlignment.CENTER,
                            horizontal_alignment=flet.CrossAxisAlignment.CENTER,
                            controls=[
                                Container(
                                    width=430,
                                    height=530,

                                    content=(
                                        Column(

                                            controls=[

                                                Row(

                                                    expand=True,
                                                    alignment=flet.MainAxisAlignment.CENTER,
                                                    vertical_alignment=flet.CrossAxisAlignment.START,

                                                    controls=[
                                                        Column(
                                                            expand=True,
                                                            alignment=flet.MainAxisAlignment.START,
                                                            horizontal_alignment=flet.CrossAxisAlignment.START,
                                                            controls=[
                                                                IconButton(
                                                                    icon=icons.INFO,
                                                                    scale=0.8,
                                                                    on_click=inf_on_click,
                                                                    data=self.page,
                                                                )
                                                            ]
                                                        ),
                                                        Column(
                                                            expand=True,
                                                            width=175,
                                                            alignment=flet.MainAxisAlignment.START,
                                                            horizontal_alignment=flet.CrossAxisAlignment.CENTER,
                                                            controls=[
                                                                Text("Hello!",
                                                                     size=25,

                                                                     )
                                                            ]

                                                        ),
                                                        Column(
                                                            expand=True
                                                        ),

                                                    ]
                                                ),
                                                Row(
                                                    expand=True,
                                                    alignment=flet.MainAxisAlignment.CENTER,
                                                    controls=[
                                                        ElevatedButton(
                                                            text="Start Installation",
                                                            icon=icons.ARROW_RIGHT,
                                                            color=self.style["text-color"],
                                                            scale=1.2
                                                        )
                                                    ]
                                                ),
                                                Row(
                                                    expand=True,
                                                    alignment=flet.MainAxisAlignment.CENTER,
                                                    vertical_alignment=flet.CrossAxisAlignment.START,
                                                    controls=[
                                                        Column(
                                                            expand=True,
                                                            alignment=flet.MainAxisAlignment.END,
                                                            horizontal_alignment=flet.CrossAxisAlignment.START,
                                                            controls=[
                                                                IconButton(
                                                                    icon=icons.POWER_SETTINGS_NEW,
                                                                    scale=1.3,
                                                                    tooltip="Shutdown",

                                                                )
                                                            ]
                                                        ),
                                                        Column(
                                                            width=175,

                                                            alignment=flet.MainAxisAlignment.END,
                                                            horizontal_alignment=flet.CrossAxisAlignment.CENTER,
                                                            controls=[
                                                                Dropdown(
                                                                    width=200,
                                                                    height=45,

                                                                    tooltip="Select Language",
                                                                    hint_text="Select Language",
                                                                    hint_style=flet.TextStyle(size=15),

                                                                    options=[
                                                                        dropdown.Option("English")
                                                                    ]
                                                                )

                                                            ]
                                                        ),
                                                        Column(expand=True,
                                                               alignment=flet.MainAxisAlignment.END,
                                                               horizontal_alignment=flet.CrossAxisAlignment.END,
                                                               controls=[
                                                                   IconButton(
                                                                       icon=icons.ARROW_RIGHT_ALT,
                                                                       tooltip="Use arch in archiso enviroment(Live CD)",
                                                                       scale=1.3
                                                                   )
                                                               ]
                                                               ),

                                                    ]
                                                )
                                            ]
                                        )
                                    )
                                )
                            ]
                        )

                    )

                )
            ]

        )


def main(page: Page):
    page.title = "EasyArch Utily"
    page.window_height = 600
    page.window_width = 500
    dlg = AlertDialog(
        title=Text("Hello, you!")
    )

    style = {
        "text-color": colors.WHITE,
        "secondary-bg-color": colors.WHITE60,
        "bg-color": colors.BLACK12,
        "border-radius": 8
    }
    app = App(style)
    page.add(app)
    page.vertical_alignment = "center" # type: ignore
    page.horizontal_alignment = "center" # type: ignore

    page.update()


flet.app(main)

Umarım yardımcı olur.
Bir butona data ögesi eklersen fonksiyon ona ulaşabilir.
Bu tarz bir sorun bende de ihtiyaç olmuştu.
İyi günler.
 

Geri
Yukarı