Compare commits

...

4 Commits

Author SHA1 Message Date
qiancj 773a75fe5b main page source code 9 months ago
qiancj 2bec43a79f deleted files useless 9 months ago
qiancj aaadd63801 added new form 9 months ago
qiancj 175cc16ba8 modified the ignore file 9 months ago
  1. 6
      .gitignore
  2. 313
      frontend/static_gui_tmp/data_import_page.py
  3. 166
      frontend/static_gui_tmp/login_page.py
  4. 286
      frontend/static_pages/main_page.py
  5. 1801
      wx_form.fbp

6
.gitignore

@ -138,4 +138,8 @@ dmypy.json
# Cython debug symbols
cython_debug/
.idea/
.idea/
tests*.*
test/

313
frontend/static_gui_tmp/data_import_page.py

@ -1,313 +0,0 @@
# -*- coding: utf-8 -*-
import wx
import wx.xrc
import wx.grid
from frontend.components_lib import (
Panel, Frame, FontSize, LayoutParams, FileDirPicker, FileDirPickerParam, GridTable
)
class DataImportBody(Panel):
"""
整个页面的 body 部分
"""
def __init__(self, parent, _id, pos, size, style, page_title):
"""
:param parent:
:param _id:
:param pos:
:param size:
:param style:
:param page_title: 页面的标题
"""
Panel.__init__(self, parent, _id, pos, size, style)
self.__page_title = page_title
self.notebook = None
self.imp_page = None
self.rec_page = None
# 调用初始化 hook
self._OnInit()
def _OnInit(self, *args, **kwargs):
"""
初始化 hook在这个方法中将 body 中所有的组件集合在一起并添加到一个整体的 sizer
:param args:
:param kwargs:
:return:
"""
# 创建 body sizer
self.body_sizer = wx.BoxSizer(wx.VERTICAL)
# 创建标题组件并添加到 body sizer 中
self.body_sizer.Add(
self.title_components(
{
"id": wx.ID_ANY,
"label": f"{self.__page_title}信息录入",
"pos": wx.DefaultPosition,
"size": wx.DefaultSize,
"style": 0
}
), 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALL, 5
)
# 创建 content 部分并添加到 body sizer 中
self.body_sizer.Add(
self.content_components(), 0, wx.ALIGN_CENTER_HORIZONTAL, 5
)
# 创建底部按钮组件并添加到 body sizer 中
self.body_sizer.Add(
self.button_components(
"退出", "导入", (80, 0), (0, 5), LayoutParams.VER_LAYOUT
), 0, wx.ALIGN_CENTER_HORIZONTAL, 5
)
def content_components(self):
"""
这是 body 中的 content 部分这个部分是页面的核心部分也是最复杂的部分
:return:
"""
# 创建 content 部分的 sizer
content_sizer = self.flex_sizer_generater(0, 1, 0, 0)
# 创建 notebook 组件,用来实现多标签页切换
self.notebook = wx.Notebook(self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, 0)
# notebook 组件的基本配置设定
self.notebook.SetFont(wx.Font(**FontSize.CONTENT_SIZE))
self.notebook.SetBackgroundColour(wx.Colour(255, 255, 255))
# 创建数据导入页
self.imp_page = ImportPage(self.notebook, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, 0)
# 创建导入记录页
self.rec_page = RecordPage(self.notebook, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, 0)
# 将两页添加到 notebook 中,默认选中 批量导入 页签
self.notebook.AddPage(self.imp_page, "批量导入", True)
self.notebook.AddPage(self.rec_page, "导入记录", False)
# 将 notebook 组件添加到 content sizer 中
content_sizer.Add(self.notebook, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALL, 5)
# 配置 content 部分距离底部按钮之间的空白占位,即 margin
content_sizer.Add((0, 1), 1, wx.ALIGN_CENTER_HORIZONTAL | wx.ALL | wx.EXPAND, 5)
return content_sizer
class ImportPage(Panel):
def __init__(self, parent, _id, pos, size, style):
"""
这是 批量导入页的组件元素
:param parent:
:param _id:
:param pos:
:param size:
:param style:
"""
Panel.__init__(self, parent, _id, pos, size, style)
self.file = None
# 基本配置
self.SetFont(wx.Font(**FontSize.CONTENT_SIZE))
self.SetMaxSize(wx.Size(700, 270))
# 调用初始化 hook
self._OnInit()
def _OnInit(self, *args, **kwargs):
"""
初始化 hook将页面整合并做相应的页面配置
:param args:
:param kwargs:
:return:
"""
# 创建页面 sizer
self.page_sizer = wx.BoxSizer(wx.VERTICAL)
# 配置大小
self.page_sizer.SetMinSize(wx.Size(700, 270))
# 获取 content 部分并添加到页面 sizer 中
self.page_sizer.Add(self.content_components(), 0, wx.ALIGN_CENTER_HORIZONTAL, 5)
# 设置sizer
self.SetSizer(self.page_sizer)
self.Layout()
# 自适应最小大小
self.page_sizer.Fit(self)
def content_components(self):
"""
创建 content 部分的组件
:return:
"""
# 创建 content sizer
outer_sizer = self.flex_sizer_generater(2, 1, 0, 0)
# 设置占位将元素垂直居中
outer_sizer.Add((0, 100), *LayoutParams.HOR_LAYOUT)
# 创建文件选择器组件的 sizer
comp_sizer = self.flex_sizer_generater(1, 3, 0, 0)
# 创建文件选择器组件
file_pick = (_, _, (self.file, *_)) = FileDirPicker(
self,
{"id": wx.ID_ANY, "label": "选择文件", "pos": wx.DefaultPosition, "size": wx.DefaultSize, "style": 0},
(5, 0), FileDirPickerParam.FILE_OBJ, FontSize.CONTENT_SIZE, LayoutParams.VER_LAYOUT
).get_item
# 设置文件选择器的大小
self.file.SetMinSize(wx.Size(400, -1))
# 将文件选择器组件添加到 sizer 中
comp_sizer.AddMany(file_pick)
outer_sizer.Add(comp_sizer, 1, wx.EXPAND, 5)
return outer_sizer
class RecordPage(ImportPage):
def __init__(self, parent, _id, pos, size, style):
"""
页面框架都一样继承自批量导入页面
:param parent:
:param _id:
:param pos:
:param size:
:param style:
"""
Panel.__init__(self, parent, _id, pos, size, style)
self.SetFont(wx.Font(**FontSize.CONTENT_SIZE))
self.SetMaxSize(wx.Size(700, 270))
# 调用初始化 hook
self._OnInit()
def grid_generater(self, num_rows, num_cols, style):
"""
该方法是一个表格生成器
:param num_rows: 行数
:param num_cols: 列数
:param style: 这个 style 和其他的组件中的 style不一样这是我自定义的 style
{
"col_names": Tuple[Str], 列名
"col_wid": Tuple[Number]/None, 列宽
"edit": Boolean, 表格中数据是否可写
"lines": Boolean, 表格边框线是否可见
"drag_size": Boolean, 是否可以拖拽修改表格大小
"drag_move": Boolean, 是否可以拖拽移动行和列
"drag_rc_size": Boolean, 是否可以拖拽改变行高和列宽
"margins": Tuple[Number], 外边框间隔
"font": Dict, 字体参数
"col_align": Tuple[Number], 表头的对齐方式
"row_align": Tuple[Number], 序号列对齐方式
"cell_align": Tuple[Number], 单元格对齐方式
"size": Tuple[Number] 表格大小
}
:return:
"""
# 创建表格
table = GridTable(self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, style)
table.CreateGrid(num_rows, num_cols)
# 设置表格各方面样式及配置
table.set_table(num_cols)
return table
def content_components(self):
# 生成表格
out = self.grid_generater(
15, 5,
{
"col_names": ("导入日期", "导入时间", "操作人", "文件名称", "导入状态"),
"col_wid": (104, 101, 86, 190, 110),
"font": FontSize.CONTENT_SIZE,
"col_align": (wx.ALIGN_CENTER, wx.ALIGN_CENTER),
"row_align": (wx.ALIGN_CENTER, wx.ALIGN_CENTER),
"cell_align": (wx.ALIGN_CENTER, wx.ALIGN_CENTER),
"size": (700, 270)
}
)
self.get_data()
return out
def get_data(self):
pass
class DataImportPage(Frame):
def __init__(self, parent, title, size, page_title):
Frame.__init__(self, parent, title=title, size=size)
self.__size = size
self.__page_title = page_title
# 调用最终汇总 hook
self.show()
def sizer(self, size, orient):
"""
创建最外层 sizer
:param size: 大小
:param orient: 对齐方式
:return:
"""
out_sizer = wx.BoxSizer(orient)
out_sizer.SetMinSize(wx.Size(*size))
return out_sizer
def get_body(self, parent, _id, pos, size, style):
"""
获取页面的 body
:param parent:
:param _id:
:param pos:
:param size:
:param style:
:return:
"""
body_panel = DataImportBody(parent, _id, pos, size, style, self.__page_title)
return body_panel
def show(self):
"""
最终汇总配置 hook
:return:
"""
# 获取 body
self.__body = self.get_body(self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL)
# 设置 sizer
self.__body.SetSizer(self.__body.body_sizer)
self.__body.Layout()
# 自适应最小大小
self.__body.body_sizer.Fit(self.__body)
# 创建 frame sizer
frame_sizer = self.sizer(self.__size, wx.VERTICAL)
# 将 body 添加到 frame sizer 中
frame_sizer.Add(self.__body, 0, wx.ALL | wx.ALIGN_CENTER_HORIZONTAL, 5)
# 设置 sizer
self.SetSizer(frame_sizer)
self.Layout()
# 将窗口展示到显示器中心
self.Centre(wx.BOTH)
# 事件绑定
self.event_bind()
def exit_onclick(self, event):
self.Destroy()
def login_onclick(self, event):
idx = self.__body.notebook.GetSelection()
op = "导入" if self.__body.notebook.GetPage(idx) == self.__body.imp_page else "导出"
popup = wx.MessageDialog(None, f"您提交了{op}操作", f"{op}操作", wx.YES_DEFAULT)
if popup.ShowModal() == wx.ID_YES:
self.Close()
def change_btn_name(self, event):
idx = self.__body.notebook.GetSelection()
if self.__body.notebook.GetPage(idx) == self.__body.imp_page:
self.__body.submit_btn.SetLabel("导入")
else:
self.__body.submit_btn.SetLabel("导出")
def event_bind(self):
"""
事件绑定
:return:
"""
self.__body.exit_btn.Bind(wx.EVT_LEFT_UP, self.exit_onclick)
self.__body.submit_btn.Bind(wx.EVT_LEFT_UP, self.login_onclick)
# 给 notebook 绑定页签切换事件
self.__body.notebook.Bind(wx.EVT_NOTEBOOK_PAGE_CHANGED, self.change_btn_name)
if __name__ == '__main__':
app = wx.App()
frame = DataImportPage(None, "数据导入", (800, 510), "积层")
frame.Show()
app.MainLoop()

166
frontend/static_gui_tmp/login_page.py

@ -1,166 +0,0 @@
# encoding: utf-8
"""
@author: Qiancj
@contact: qiancj@risenenergy.com
@file: tests
@create-time: 2023-08-01 14:08
@description: The new python script
"""
import wx
from frontend.components_lib import (
DropList, InputLabel, LayoutParams, Frame, Panel, FontSize
)
class LoginBody(Panel):
"""
这是页面的 body 部分由于页面 body 部分较为复杂所以单独拆分一个类来实现
"""
def __init__(self, parent, _id, pos, size, style):
Panel.__init__(self, parent, _id, pos, size, style)
self.drop_list = None
self.username = None
self.pwd = None
# 调用初始化 hook
self._OnInit()
def _OnInit(self, *args, **kwargs):
"""
初始化 hook在这个方法中将 body 中所有的组件集合在一起并添加到一个整体的 sizer
:param args:
:param kwargs:
:return:
"""
# 创建 body sizer
self.body_sizer = wx.BoxSizer(wx.VERTICAL)
# 创建标题组件并添加到 body sizer 中
self.body_sizer.Add(
self.title_components(
{
"id": wx.ID_ANY,
"label": "登 录",
"pos": wx.DefaultPosition,
"size": wx.DefaultSize,
"style": 0
}
), 0, wx.ALIGN_CENTER_HORIZONTAL, 5
)
# 创建 content 部分的组件并添加到 body sizer 中
self.body_sizer.Add(self.content_components(), 0, wx.ALIGN_CENTER_HORIZONTAL, 5)
# 创建底部按钮组件并添加到 body sizer 中
self.body_sizer.Add(
self.button_components(
"退出", "登录", (80, 0), (0, 15), LayoutParams.VER_LAYOUT
), 0, wx.ALIGN_CENTER_HORIZONTAL, 5)
def content_components(self):
"""
这是 body 中的 content 部分这个部分是页面的核心部分也是最复杂的部分
:return:
"""
# 创建 content 部分的 sizer
content_sizer = self.flex_sizer_generater(0, 3, 0, 0)
# 创建并配置 droplist 组件
# 该组件为三列单行组件,基本格式为 [文字栏][空白占位栏][下拉菜单控件栏]
# 数据结构为 ((文字控件, 排版参数), (空白占位控件, 排版参数), (下拉菜单控件, 排版参数))
# 通过解构赋值来讲下拉菜单控件赋值给 droplist 属性
droplist = (_, _, (self.drop_list, *_)) = DropList(
self,
{"id": wx.ID_ANY, "label": "岗位角色", "pos": wx.DefaultPosition, "size": wx.DefaultSize, "style": 0},
(5, 0),
{
"id": wx.ID_ANY, "pos": wx.DefaultPosition, "size": wx.Size(180, -1), "style": 0,
"choices": [
"积层", "焊接极耳", "三封口", "注液前称重", "注液", "注液后称重", "排气后称重", "容量测试",
"AC1", "AC2", "AC3", "AC4", "补电测试", "入库", "出库装箱", "管理员"
]
},
FontSize.CONTENT_SIZE, LayoutParams.VER_LAYOUT
).get_item
# 创建并配置用户名输入组件
username = (_, _, (self.username, *_)) = InputLabel(
self,
{"id": wx.ID_ANY, "label": "用户姓名", "pos": wx.DefaultPosition, "size": wx.DefaultSize, "style": 0},
(5, 0),
{"id": wx.ID_ANY, "pos": wx.DefaultPosition, "size": wx.Size(180, -1), "style": 0, "value": ""},
FontSize.CONTENT_SIZE, LayoutParams.VER_LAYOUT
).get_item
# 创建并配置密码输入组件
pwd = (_, _, (self.pwd, *_)) = InputLabel(
self,
{"id": wx.ID_ANY, "label": "密 码", "pos": wx.DefaultPosition, "size": wx.DefaultSize, "style": 0},
(5, 0),
{
"id": wx.ID_ANY, "pos": wx.DefaultPosition, "size": wx.Size(180, -1), "style": wx.TE_PASSWORD,
"value": ""
},
FontSize.CONTENT_SIZE, LayoutParams.VER_LAYOUT
).get_item
# 配置 content 部分距离底部按钮之间的空白占位,即 margin
btm_spacer = [(0, 5), *LayoutParams.VER_LAYOUT]
# 将各组件添加到 content sizer 中
content_comp = (*droplist, *username, *pwd, btm_spacer)
content_sizer.AddMany(content_comp)
return content_sizer
class LoginPage(Frame):
"""
登录页面的事件绑定页面展示
"""
def __init__(self, parent, title, size):
Frame.__init__(self, parent, title=title, size=size)
@staticmethod
def get_body(parent, _id, pos, size, style):
"""
调用 body 类来获取页面
:param parent:
:param _id:
:param pos:
:param size:
:param style:
:return:
"""
body_panel = LoginBody(parent, _id, pos, size, style)
return body_panel
def event_bind(self):
"""
绑定事件
:return:
"""
# 给两个按钮绑定点击事件
# 这里绑定的事件为当鼠标左键抬起时触发,因为鼠标左键按下还未抬起的时候
# 还有可以后悔的余地,不应该触发事件,但是按下后松开抬起,则是确定要点击该按钮
self._body.exit_btn.Bind(wx.EVT_LEFT_UP, self.exit_onclick)
self._body.submit_btn.Bind(wx.EVT_LEFT_UP, self.login_onclick)
# 给密码输入框绑定回车事件
self._body.pwd.Bind(wx.EVT_KEY_UP, self.on_enter_up)
def on_enter_up(self, event):
key_code = event.GetKeyCode()
if key_code == 13:
self.login_onclick(None)
def exit_onclick(self, event):
self.Destroy()
def login_onclick(self, event):
popup = wx.MessageDialog(None, "您提交了登录操作", "登录操作", wx.YES_DEFAULT)
if popup.ShowModal() == wx.ID_YES:
self.Close()
if __name__ == '__main__':
app = wx.App()
frame = LoginPage(None, "登录", size=(500, 320))
frame.Show()
app.MainLoop()

286
frontend/static_pages/main_page.py

@ -0,0 +1,286 @@
# encoding: utf-8
"""
@author: Qiancj
@contact: qiancj@risenenergy.com
@file: main_page
@create-time: 2023-08-22 15:40
@description: The new python script
"""
###########################################################################
## Python code generated with wxFormBuilder (version 3.10.1-0-g8feb16b3)
## http://www.wxformbuilder.org/
##
## PLEASE DO *NOT* EDIT THIS FILE!
###########################################################################
import wx
import wx.xrc
###########################################################################
## Class MainPage
###########################################################################
class MainPage(wx.Frame):
def __init__(self, parent):
wx.Frame.__init__(self, parent, id=wx.ID_ANY, title=wx.EmptyString, pos=wx.DefaultPosition,
size=wx.Size(800, 600), style=wx.DEFAULT_FRAME_STYLE | wx.TAB_TRAVERSAL)
self.SetSizeHints(wx.DefaultSize, wx.DefaultSize)
self.SetBackgroundColour(wx.Colour(255, 255, 255))
page_sizer = wx.BoxSizer(wx.VERTICAL)
self.body = wx.Panel(self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL)
self.body.SetBackgroundColour(wx.SystemSettings.GetColour(wx.SYS_COLOUR_WINDOW))
body_sizer = wx.FlexGridSizer(0, 1, 0, 0)
body_sizer.SetFlexibleDirection(wx.BOTH)
body_sizer.SetNonFlexibleGrowMode(wx.FLEX_GROWMODE_SPECIFIED)
body_sizer.Add((0, 10), 1, wx.EXPAND, 5)
title_sizer = wx.FlexGridSizer(0, 1, 0, 0)
title_sizer.SetFlexibleDirection(wx.BOTH)
title_sizer.SetNonFlexibleGrowMode(wx.FLEX_GROWMODE_SPECIFIED)
self.m_staticText6 = wx.StaticText(self.body, wx.ID_ANY, u"钱都去哪了", wx.DefaultPosition, wx.DefaultSize, 0)
self.m_staticText6.Wrap(-1)
self.m_staticText6.SetFont(
wx.Font(22, wx.FONTFAMILY_MODERN, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, False, "黑体"))
title_sizer.Add(self.m_staticText6, 0, wx.ALL | wx.ALIGN_CENTER_HORIZONTAL, 5)
body_sizer.Add(title_sizer, 0, wx.ALIGN_CENTER_HORIZONTAL, 5)
body_sizer.Add((0, 10), 1, wx.EXPAND, 5)
content_sizer = wx.FlexGridSizer(0, 1, 0, 0)
content_sizer.SetFlexibleDirection(wx.BOTH)
content_sizer.SetNonFlexibleGrowMode(wx.FLEX_GROWMODE_SPECIFIED)
fgSizer12 = wx.FlexGridSizer(0, 11, 0, 0)
fgSizer12.SetFlexibleDirection(wx.BOTH)
fgSizer12.SetNonFlexibleGrowMode(wx.FLEX_GROWMODE_SPECIFIED)
self.m_staticText7 = wx.StaticText(self.body, wx.ID_ANY, u"月总预算", wx.DefaultPosition, wx.DefaultSize, 0)
self.m_staticText7.Wrap(-1)
self.m_staticText7.SetFont(
wx.Font(14, wx.FONTFAMILY_MODERN, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, False, "黑体"))
fgSizer12.Add(self.m_staticText7, 0, wx.ALL | wx.ALIGN_CENTER_VERTICAL, 5)
fgSizer12.Add((5, 0), 1, wx.EXPAND, 5)
self.m_textCtrl5 = wx.TextCtrl(self.body, wx.ID_ANY, u"3012", wx.DefaultPosition, wx.DefaultSize, 0)
self.m_textCtrl5.SetFont(
wx.Font(14, wx.FONTFAMILY_MODERN, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, False, "黑体"))
self.m_textCtrl5.Enable(False)
fgSizer12.Add(self.m_textCtrl5, 0, wx.ALL, 5)
fgSizer12.Add((20, 0), 1, wx.EXPAND, 5)
self.m_staticText15 = wx.StaticText(self.body, wx.ID_ANY, u"月余预算", wx.DefaultPosition, wx.DefaultSize, 0)
self.m_staticText15.Wrap(-1)
self.m_staticText15.SetFont(
wx.Font(14, wx.FONTFAMILY_MODERN, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, False, "黑体"))
fgSizer12.Add(self.m_staticText15, 0, wx.ALL | wx.ALIGN_CENTER_VERTICAL, 5)
fgSizer12.Add((5, 0), 1, wx.EXPAND, 5)
self.m_textCtrl6 = wx.TextCtrl(self.body, wx.ID_ANY, u"2930", wx.DefaultPosition, wx.DefaultSize, 0)
self.m_textCtrl6.SetFont(
wx.Font(14, wx.FONTFAMILY_MODERN, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, False, "黑体"))
self.m_textCtrl6.Enable(False)
fgSizer12.Add(self.m_textCtrl6, 0, wx.ALL, 5)
fgSizer12.Add((20, 0), 1, wx.EXPAND, 5)
self.m_staticText11 = wx.StaticText(self.body, wx.ID_ANY, u"剩余天数", wx.DefaultPosition, wx.DefaultSize, 0)
self.m_staticText11.Wrap(-1)
self.m_staticText11.SetFont(
wx.Font(14, wx.FONTFAMILY_MODERN, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, False, "黑体"))
fgSizer12.Add(self.m_staticText11, 0, wx.ALL | wx.ALIGN_CENTER_VERTICAL, 5)
fgSizer12.Add((5, 0), 1, wx.EXPAND, 5)
self.m_textCtrl10 = wx.TextCtrl(self.body, wx.ID_ANY, u"29", wx.DefaultPosition, wx.DefaultSize, 0)
self.m_textCtrl10.SetFont(
wx.Font(14, wx.FONTFAMILY_MODERN, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, False, "黑体"))
self.m_textCtrl10.Enable(False)
fgSizer12.Add(self.m_textCtrl10, 0, wx.ALL, 5)
self.m_staticText9 = wx.StaticText(self.body, wx.ID_ANY, u"日总预算", wx.DefaultPosition, wx.DefaultSize, 0)
self.m_staticText9.Wrap(-1)
self.m_staticText9.SetFont(
wx.Font(14, wx.FONTFAMILY_MODERN, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, False, "黑体"))
fgSizer12.Add(self.m_staticText9, 0, wx.ALL | wx.ALIGN_CENTER_VERTICAL, 5)
fgSizer12.Add((5, 0), 1, wx.EXPAND, 5)
self.m_textCtrl9 = wx.TextCtrl(self.body, wx.ID_ANY, u"115", wx.DefaultPosition, wx.DefaultSize, 0)
self.m_textCtrl9.SetFont(
wx.Font(14, wx.FONTFAMILY_MODERN, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, False, "黑体"))
self.m_textCtrl9.Enable(False)
fgSizer12.Add(self.m_textCtrl9, 0, wx.ALL, 5)
fgSizer12.Add((20, 0), 1, wx.EXPAND, 5)
self.m_staticText12 = wx.StaticText(self.body, wx.ID_ANY, u"今日消费", wx.DefaultPosition, wx.DefaultSize, 0)
self.m_staticText12.Wrap(-1)
self.m_staticText12.SetFont(
wx.Font(14, wx.FONTFAMILY_MODERN, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, False, "黑体"))
fgSizer12.Add(self.m_staticText12, 0, wx.ALL | wx.ALIGN_CENTER_VERTICAL, 5)
fgSizer12.Add((5, 0), 1, wx.EXPAND, 5)
self.m_textCtrl8 = wx.TextCtrl(self.body, wx.ID_ANY, u"46", wx.DefaultPosition, wx.DefaultSize, 0)
self.m_textCtrl8.SetFont(
wx.Font(14, wx.FONTFAMILY_MODERN, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, False, "黑体"))
self.m_textCtrl8.Enable(False)
fgSizer12.Add(self.m_textCtrl8, 0, wx.ALL, 5)
fgSizer12.Add((20, 0), 1, wx.EXPAND, 5)
self.m_staticText16 = wx.StaticText(self.body, wx.ID_ANY, u"日余预算", wx.DefaultPosition, wx.DefaultSize, 0)
self.m_staticText16.Wrap(-1)
self.m_staticText16.SetFont(
wx.Font(14, wx.FONTFAMILY_MODERN, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, False, "黑体"))
fgSizer12.Add(self.m_staticText16, 0, wx.ALL | wx.ALIGN_CENTER_VERTICAL, 5)
fgSizer12.Add((5, 0), 1, wx.EXPAND, 5)
self.m_textCtrl7 = wx.TextCtrl(self.body, wx.ID_ANY, u"69", wx.DefaultPosition, wx.DefaultSize, 0)
self.m_textCtrl7.SetFont(
wx.Font(14, wx.FONTFAMILY_MODERN, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, False, "黑体"))
self.m_textCtrl7.Enable(False)
fgSizer12.Add(self.m_textCtrl7, 0, wx.ALL, 5)
content_sizer.Add(fgSizer12, 0, wx.ALIGN_CENTER_HORIZONTAL, 5)
content_sizer.Add((0, 5), 1, wx.EXPAND, 5)
fgSizer13 = wx.FlexGridSizer(0, 1, 0, 0)
fgSizer13.SetFlexibleDirection(wx.BOTH)
fgSizer13.SetNonFlexibleGrowMode(wx.FLEX_GROWMODE_SPECIFIED)
fgSizer13.SetMinSize(wx.Size(700, 290))
sbSizer3 = wx.StaticBoxSizer(wx.StaticBox(self.body, wx.ID_ANY, u"账单列表"), wx.VERTICAL)
sbSizer3.SetMinSize(wx.Size(700, 290))
self.m_scrolledWindow1 = wx.ScrolledWindow(sbSizer3.GetStaticBox(), wx.ID_ANY, wx.DefaultPosition,
wx.DefaultSize, wx.HSCROLL | wx.VSCROLL)
self.m_scrolledWindow1.SetScrollRate(5, 5)
self.m_scrolledWindow1.SetMinSize(wx.Size(700, 290))
self.m_scrolledWindow1.SetMaxSize(wx.Size(700, 290))
fgSizer14 = wx.FlexGridSizer(0, 1, 0, 0)
fgSizer14.SetFlexibleDirection(wx.BOTH)
fgSizer14.SetNonFlexibleGrowMode(wx.FLEX_GROWMODE_SPECIFIED)
fgSizer14.SetMinSize(wx.Size(700, 290))
self.m_checkBox63 = wx.CheckBox(self.m_scrolledWindow1, wx.ID_ANY,
u"{id}·|·{date}·|·{time}·|·{value}·|·{tag}·|·{details}", wx.DefaultPosition,
wx.DefaultSize, 0)
self.m_checkBox63.SetFont(
wx.Font(14, wx.FONTFAMILY_SWISS, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, False, "微软雅黑"))
fgSizer14.Add(self.m_checkBox63, 0, wx.ALL | wx.ALIGN_CENTER_VERTICAL, 5)
self.m_scrolledWindow1.SetSizer(fgSizer14)
self.m_scrolledWindow1.Layout()
fgSizer14.Fit(self.m_scrolledWindow1)
sbSizer3.Add(self.m_scrolledWindow1, 0, wx.ALL, 5)
fgSizer13.Add(sbSizer3, 0, wx.ALIGN_CENTER_HORIZONTAL, 5)
content_sizer.Add(fgSizer13, 0, wx.ALIGN_CENTER_HORIZONTAL, 5)
body_sizer.Add(content_sizer, 0, wx.ALIGN_CENTER_HORIZONTAL, 5)
body_sizer.Add((0, 10), 1, wx.EXPAND, 5)
btn_sizer = wx.FlexGridSizer(0, 7, 0, 0)
btn_sizer.SetFlexibleDirection(wx.BOTH)
btn_sizer.SetNonFlexibleGrowMode(wx.FLEX_GROWMODE_SPECIFIED)
self.m_button4 = wx.Button(self.body, wx.ID_ANY, u"退出系统", wx.DefaultPosition, wx.DefaultSize, 0)
self.m_button4.SetFont(
wx.Font(14, wx.FONTFAMILY_MODERN, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, False, "黑体"))
btn_sizer.Add(self.m_button4, 0, wx.ALL, 5)
btn_sizer.Add((20, 0), 1, wx.EXPAND, 5)
self.m_button6 = wx.Button(self.body, wx.ID_ANY, u"批量删除", wx.DefaultPosition, wx.DefaultSize, 0)
self.m_button6.SetFont(
wx.Font(14, wx.FONTFAMILY_MODERN, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, False, "黑体"))
btn_sizer.Add(self.m_button6, 0, wx.ALL, 5)
btn_sizer.Add((20, 0), 1, wx.EXPAND, 5)
self.m_button5 = wx.Button(self.body, wx.ID_ANY, u"日终结算", wx.DefaultPosition, wx.DefaultSize, 0)
self.m_button5.SetFont(
wx.Font(14, wx.FONTFAMILY_MODERN, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, False, "黑体"))
btn_sizer.Add(self.m_button5, 0, wx.ALL, 5)
btn_sizer.Add((20, 0), 1, wx.EXPAND, 5)
self.m_button7 = wx.Button(self.body, wx.ID_ANY, u"新增记账", wx.DefaultPosition, wx.DefaultSize, 0)
self.m_button7.SetFont(
wx.Font(14, wx.FONTFAMILY_MODERN, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, False, "黑体"))
btn_sizer.Add(self.m_button7, 0, wx.ALL, 5)
body_sizer.Add(btn_sizer, 0, wx.ALIGN_CENTER_HORIZONTAL, 5)
body_sizer.Add((0, 10), 1, wx.EXPAND, 5)
self.body.SetSizer(body_sizer)
self.body.Layout()
body_sizer.Fit(self.body)
page_sizer.Add(self.body, 0, wx.ALL | wx.ALIGN_CENTER_HORIZONTAL, 5)
self.SetSizer(page_sizer)
self.Layout()
self.m_menubar2 = wx.MenuBar(0)
self.m_menubar2.SetFont(
wx.Font(14, wx.FONTFAMILY_MODERN, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, False, "黑体"))
self.m_menu2 = wx.Menu()
self.m_menu21 = wx.Menu()
self.m_menu2.AppendSubMenu(self.m_menu21, u"绑定手机")
self.m_menu3 = wx.Menu()
self.m_menu2.AppendSubMenu(self.m_menu3, u"退出登录")
self.m_menubar2.Append(self.m_menu2, u"用户名")
self.SetMenuBar(self.m_menubar2)
self.Centre(wx.BOTH)
def __del__(self):
pass

1801
wx_form.fbp

File diff suppressed because it is too large
Loading…
Cancel
Save