Replies: 2 comments
-
Please share runnable code. (Will also be nice, if you could reduce the code size only on the essentials.) |
Beta Was this translation helpful? Give feedback.
0 replies
-
Thanks for the reply, minimal working code (only one view of my app and the essential route, however my widget styling remains): import flet as ft
import datetime
class NewBetInterface(ft.Container):
def __init__(self,page: ft.Page):#,cname,price,bet,date):
super().__init__()
self.page = page
self.date_picker = ft.DatePicker(
on_change=self.change_date,
on_dismiss=self.date_picker_dismissed,
first_date=datetime.datetime(2023, 10, 1),
last_date=datetime.datetime(2024, 10, 1),
)
self.page.overlay.append(self.date_picker)
self.br = 10
self.target = ft.TextField(label="Target.",border=ft.InputBorder.UNDERLINE)
self.statement = ft.TextField(label="Statement.",border=ft.InputBorder.UNDERLINE)
self.ipay = ft.TextField(label="Ipay",border=ft.InputBorder.UNDERLINE,expand=True)
self.tpay = ft.TextField(label="Tpay",border=ft.InputBorder.UNDERLINE,expand=True)
self.payrow = ft.Row([self.ipay,self.tpay])
self.date_button = ft.ElevatedButton(
text=self.eval_date_picker(self.date_picker),
icon=ft.Icons.CALENDAR_MONTH,
on_click=lambda _: self.page.open(self.date_picker),
bgcolor=ft.Colors.BLUE_50,
expand=True,
elevation=2
)
self.page.decoration = ft.BoxDecoration(
image=ft.DecorationImage(src= "https://images.pexels.com/photos/259915/pexels-photo-259915.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1",
fit = ft.ImageFit.FIT_WIDTH,
opacity=0.8)
)
def eval_date_picker(self,e):
if self.date_picker.value is not None:
print("in eval")
return self.date_picker.value.strftime('%d %b %Y')
else:
return "Pick Date"
def change_date(self,e):
print(f"Date picker changed, value is {self.date_picker.value}")
self.date_button.text = self.eval_date_picker(self.date_picker)
self.date_button.update()
def date_picker_dismissed(self,e):
print(f"Date picker dismissed, value is {self.date_picker.value}")
def send_pressed(e,event):
print("Send button clicked")
def generate_pressed(e,event):
print("Send button clicked")
def decline_pressed(e,event):
print("Decline button clicked")
print(f"event: {event}")
print(f"event: {e}")
def build(self):
self.page.decoration = ft.BoxDecoration(
image=ft.DecorationImage(src= "https://images.pexels.com/photos/259915/pexels-photo-259915.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1",
fit = ft.ImageFit.FIT_WIDTH,
opacity=0.8))
self.send_request = ft.FloatingActionButton(icon=ft.Icons.SEND,
text="Send",
on_click=self.send_pressed,
bgcolor=ft.Colors.LIME_300,
expand=True,
elevation=3
)
self.generate_request = ft.FloatingActionButton(icon=ft.Icons.LINK,
text="Generate one time link",
on_click=self.generate_pressed,
bgcolor=ft.Colors.BLUE_ACCENT,
expand=True,
elevation=3
)
self.generate_bet_row = ft.Row([self.send_request,self.generate_request],expand=True)
self.object = ft.Row([
ft.Column([
ft.Container(
content=ft.Column(
[
self.target,
self.statement,
self.payrow,
self.date_button,
self.generate_bet_row,
],
alignment=ft.MainAxisAlignment.CENTER,
horizontal_alignment=ft.CrossAxisAlignment.CENTER,
spacing=30
),
width=500,
height=500,
bgcolor=ft.Colors.BLUE_50,
padding=30,
border_radius=10,
)
],
alignment=ft.MainAxisAlignment.CENTER,
)
],
expand=True,
alignment=ft.MainAxisAlignment.CENTER,
vertical_alignment=ft.CrossAxisAlignment.CENTER
)
return self.object
class AppLayout(ft.Row):
def __init__(
self,
app,
page: ft.Page,
*args,
**kwargs
):
super().__init__(*args, **kwargs)
self.app = app
self.page = page
self.page.decoration = ft.BoxDecoration(
image=ft.DecorationImage(src= "https://images.pexels.com/photos/259915/pexels-photo-259915.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1",
fit = ft.ImageFit.COVER,
opacity=1)
)
self.newbet_view = NewBetInterface(self.page).build()
self._active_view = self.newbet_view
self.expand=True
self.controls = [self.active_view]
self.date_button = ft.ElevatedButton(
"Pick date",
icon=ft.Icons.CALENDAR_MONTH,
on_click=lambda _: self.date_picker.pick_date(),
)
@property
def active_view(self):
return self._active_view
@active_view.setter
def active_view(self, view):
self._active_view = view
self.controls[-1] = self._active_view
self.page.decoration = ft.BoxDecoration(
image=ft.DecorationImage(src= "https://images.pexels.com/photos/259915/pexels-photo-259915.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1",
fit = ft.ImageFit.COVER,
opacity=1)
)
self.update()
def set_newbet_view(self):
self.active_view = self.newbet_view
self.page.update()
class TrelloApp(AppLayout):
def __init__(self, page: ft.Page):
self.page = page
super().__init__(
self,
self.page,
tight=True,
expand=True,
vertical_alignment="start",
)
self.page.on_route_change = self.route_change
def initialize(self):
self.page.views.append(
ft.View(
"/",
[self],
)
)
self.page.update()
# create an initial board for demonstration if no boards
self.page.go("/")
def route_change(self, e):
troute = ft.TemplateRoute(self.page.route)
if troute.match("/"):
self.page.go("/new_bet")
elif troute.match("/new_bet"):
self.set_newbet_view()
else:
print("Unknown route")
self.page.update()
def main(page: ft.Page):
page.title = "Stubet"
page.padding = 0
page.theme = ft.Theme(font_family="Kanit")
page.theme.page_transitions.windows = "cupertino"
app = TrelloApp(page)
page.add(app)
app.initialize()
page.decoration = ft.BoxDecoration(
image=ft.DecorationImage(src= "https://images.pexels.com/photos/259915/pexels-photo-259915.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1",
fit = ft.ImageFit.COVER,
opacity=1)
)
page.go("/new_bet")
ft.app(target=main, assets_dir="../assets")
This code generates this app: |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
Question
Hello,
I found this guide on implementing BoxDecoration to get a background image, which works for this simple example. However, once I try to implement it on a multi page app, the image doesn't render. My app follows the Trello clone layout techniques, and I have tried setting the page decoration on all control levels by passing the Page control further down the chain:
Code sample
MarketView:
Beta Was this translation helpful? Give feedback.
All reactions