main.py 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. #!/usr/bin/env python
  2. # -*- encoding: utf-8 -*-
  3. '''
  4. @Contact : liuyuqi.gov@msn.cn
  5. @Time : 2023/12/29 10:11:11
  6. @License : Copyright © 2017-2022 liuyuqi. All Rights Reserved.
  7. @Desc : ente point
  8. '''
  9. import logging
  10. import flet as ft
  11. from app.pages.home import HomePage
  12. from app.pages.todo import TodoPage
  13. from app.pages.plotly_chart import ChartPage
  14. import plotly.graph_objects as go
  15. from flet.plotly_chart import PlotlyChart
  16. from flet import AppBar
  17. from flet import Card
  18. from flet import Column
  19. from flet import Container
  20. from flet import ElevatedButton
  21. from flet import IconButton
  22. from flet import NavigationRail
  23. from flet import NavigationRailDestination
  24. from flet import Page
  25. from flet import Row
  26. from flet import Stack
  27. from flet import Switch
  28. from flet import Text
  29. from flet import VerticalDivider
  30. from flet import colors
  31. from flet import icons
  32. from flet.utils import slugify
  33. def main(page: ft.Page):
  34. ''' main '''
  35. log_format = "%(asctime)s - %(levelname)s - %(message)s"
  36. logging.basicConfig(filename='app.log', level=logging.DEBUG, format=log_format)
  37. logging.info('程序启动')
  38. content = HomePage()
  39. def menu_changed(e):
  40. ''' menu change evnet '''
  41. content.controls.clear()
  42. if e.control.selected_index == 0:
  43. content.controls.append(HomePage())
  44. elif e.control.selected_index == 1:
  45. content.controls.append(TodoPage())
  46. elif e.control.selected_index == 2:
  47. content.controls.append(ft.Text("商品库!"))
  48. elif e.control.selected_index == 3:
  49. fig = ChartPage().DrawChart()
  50. # fig.show()
  51. content.controls.append(PlotlyChart(fig, expand=True))
  52. elif e.control.selected_index == 4:
  53. content.controls.append(ft.Text("Setting!"))
  54. page.update()
  55. rail = ft.NavigationRail(
  56. selected_index=0,
  57. label_type=ft.NavigationRailLabelType.ALL,
  58. # extended=True,
  59. min_width=100,
  60. min_extended_width=400,
  61. # leading=ft.FloatingActionButton(icon=ft.icons.CREATE, text="Add"),
  62. group_alignment=-0.9,
  63. destinations=[
  64. ft.NavigationRailDestination(
  65. icon=ft.icons.HOME, selected_icon=ft.icons.HOME, label="首页"
  66. ),
  67. ft.NavigationRailDestination(
  68. icon_content=ft.Icon(ft.icons.FAVORITE),
  69. selected_icon_content=ft.Icon(name=ft.icons.FAVORITE, color=ft.colors.PINK),
  70. label="关键词",
  71. ),
  72. ft.NavigationRailDestination(
  73. icon_content=ft.Icon(ft.icons.SHOPIFY),
  74. selected_icon_content=ft.Icon(name=ft.icons.SHOPIFY, color=ft.colors.PINK),
  75. label="商品库",
  76. ),
  77. ft.NavigationRailDestination(
  78. icon_content=ft.Icon(ft.icons.BAR_CHART),
  79. selected_icon_content=ft.Icon(name=ft.icons.BAR_CHART, color=ft.colors.PINK),
  80. label="数据分析",
  81. ),
  82. ft.NavigationRailDestination(
  83. icon=ft.icons.SETTINGS_OUTLINED,
  84. selected_icon_content=ft.Icon(ft.icons.SETTINGS),
  85. label_content=ft.Text("Settings"),
  86. ),
  87. ],
  88. on_change=menu_changed,
  89. )
  90. page.title = 'First App'
  91. # menu_button = IconButton(icons.MENU)
  92. # page.appbar = AppBar(
  93. # leading=menu_button,
  94. # leading_width=40,
  95. # bgcolor=colors.SURFACE_VARIANT,
  96. # )
  97. page.add(
  98. ft.Row(
  99. [
  100. rail,
  101. ft.VerticalDivider(width=1),
  102. content,
  103. ],
  104. expand=True,
  105. )
  106. )
  107. ft.app(target=main, view=ft.WEB_BROWSER)