树状分级框架UI实例
树状分级框架UI实例;(内容参考https://zhuanlan.zhihu.com/p/108485875)
#coding:utf8
#!/usr/bin/env python
#@author: 9527 import wx
import wx.aui
from pubsub import pub
import PicturepackageUI
from note_tree import NoteTree
from Header_Panel import HeaderPanel class NavPanel(wx.Panel):
def __init__(self, parent):
super().__init__(parent) v_sizer = wx.BoxSizer(wx.VERTICAL) self.btn_new_note = wx.Button(self,style=wx.NO_BORDER)
self.btn_new_note.SetLabelMarkup('<span bgcolor="white" fgcolor="#ea5455" weight="bold" size="large">服务端管理系统</span>') v_sizer.Add(self.btn_new_note, flag=wx.ALIGN_CENTER|wx.TOP, border=40)
v_sizer.AddSpacer(20) self.note_tree = NoteTree(self) v_sizer.Add(self.note_tree, proportion=1,flag=wx.EXPAND)
self.SetSizer(v_sizer) self.SetBackgroundColour("#2d4059") class ListPanel(wx.Panel):
def __init__(self, parent):
super().__init__(parent,style=wx.BORDER_NONE)
self.SetBackgroundColour('#8f8787')
#self.SetPosition(wx.Point(-1, 60)) #**********************************************
main_sizer = wx.BoxSizer(wx.VERTICAL)
self.header_panel = HeaderPanel(self)
main_sizer.Add(self.header_panel,flag=wx.EXPAND)
self.SetSizer(main_sizer)
#********************************************** class TextEditor(wx.Panel):
def __init__(self, parent):
super().__init__(parent)
self.SetBackgroundColour('#086972') class MainFrame(wx.Frame):
def __init__(self):
super().__init__(None, title='服务端管理系统',size=(800,600))
self.aui_manager = wx.aui.AuiManager(self,wx.aui.AUI_MGR_TRANSPARENT_HINT) #*********************************************
'''
bSizer1 = wx.BoxSizer( wx.VERTICAL )
self.m_toolBar1 = wx.ToolBar( self, wx.ID_ANY, wx.DefaultPosition, wx.Size( -1,-1 ), wx.TB_HORIZONTAL )
self.m_toolBar1.Realize()
bSizer1.Add( self.m_toolBar1, 0, wx.EXPAND, 5 )
'''
#*********************************** self.nav_panel = NavPanel(self)
self.list_panel = ListPanel(self)
self.detail_panel = TextEditor(self) self.aui_manager.AddPane(self.nav_panel, self._get_default_pane_info().Left().Row(0).BestSize(300,-1))
self.aui_manager.AddPane(self.list_panel, self._get_default_pane_info().Left().Row(1).BestSize(-1, 250).MinSize(-1,250))
self.aui_manager.AddPane(self.detail_panel, self._get_default_pane_info().CenterPane().Position(0).BestSize(400,-1)) self.aui_manager.Update() self.Maximize(True)
self._register_listeners() def _get_default_pane_info(self):
#改变窗体样式
return wx.aui.AuiPaneInfo().CaptionVisible(False).PaneBorder(False).CloseButton(False).PinButton(False).Gripper(
False) def on_frame_closing(self, e):
self.aui_manager.UnInit()
del self.aui_manager
self.Destroy() def _register_listeners(self):
self.Bind(wx.EVT_CLOSE, self.on_frame_closing) if __name__ == '__main__':
app = wx.App()
frame = MainFrame()
frame.Show()
app.MainLoop()
note_tree
#coding:utf8
#!/usr/bin/env python
#@author: 9527 import wx.lib.agw.customtreectrl as customtreectrl class NoteTree(customtreectrl.CustomTreeCtrl):
def __init__(self, parent):
super().__init__(parent,agwStyle=customtreectrl.TR_HAS_BUTTONS|customtreectrl.TR_FULL_ROW_HIGHLIGHT|customtreectrl.TR_ELLIPSIZE_LONG_ITEMS|customtreectrl.TR_TOOLTIP_ON_LONG_ITEMS) self.root = self.AddRoot("后台管理分类")
self._load_note_books()
self._init_ui() def _load_note_books(self):
root_note_books = ['权限','示例2','示例3'] for note_book in root_note_books:
root_node = self.AppendItem(self.root, note_book)
self.AppendItem(root_node, "笔记本")
self.ExpandAll() def _init_ui(self):
panel_font = self.GetFont()
panel_font.SetPointSize(panel_font.GetPointSize() + 1)
self.SetFont(panel_font) self.EnableSelectionGradient(False)
self.EnableSelectionGradient(False) self.SetForegroundColour("#ececec")
self.SetBackgroundColour("#2a2a2a")
self.SetHilightFocusColour("#ea5455")
self.SetHilightNonFocusColour("#f07b3f") self.SetSpacing(20)
self.SetIndent(10)
Header_Panel
#coding:utf8
#!/usr/bin/env python
#@author: 9527 import wx class HeaderPanel(wx.Panel):
def __init__(self, parent):
super().__init__(parent, style=wx.BORDER_NONE)
self._init_ui() def _init_ui(self):
self.main_sizer = wx.BoxSizer(wx.VERTICAL) self.st_notebook_name = wx.StaticText(self, label='笔记本名称')
self.main_sizer.Add(self.st_notebook_name, flag=wx.ALL, border=10) self._build_note_actions()
self._build_search_bar()
self.main_sizer.AddSpacer(10)
self.SetSizer(self.main_sizer) self.SetBackgroundColour("#ebebeb") def _build_note_actions(self):
note_action_sizer = wx.BoxSizer(wx.HORIZONTAL) self.st_note_count = wx.StaticText(self, label="10条笔记")
note_action_sizer.Add(self.st_note_count) note_action_sizer.AddStretchSpacer() self.btn_display_order_options = wx.Button(self,label='sort')
note_action_sizer.Add(self.btn_display_order_options) self.btn_display_notebook_options = wx.Button(self, label='more')
note_action_sizer.Add(self.btn_display_notebook_options,flag=wx.LEFT,border=10) self.main_sizer.Add(note_action_sizer, flag=wx.ALL|wx.EXPAND, border=10) def _build_search_bar(self):
self.search_bar = wx.SearchCtrl(self,style=wx.TE_PROCESS_ENTER)
self.search_bar.ShowCancelButton(True) search_menu = wx.Menu()
search_menu.AppendCheckItem(wx.ID_ANY, '搜索所有笔记本')
self.search_bar.SetMenu(search_menu)
self.search_bar.SetHint('搜索当前笔记本') self.main_sizer.Add(self.search_bar, flag=wx.EXPAND|wx.LEFT|wx.RIGHT, border=8)
树状分级框架UI实例的更多相关文章
- Highcharts 树状图(Treemap)
Highcharts 树状图(Treemap) 树状图 series 配置 设置 series 的 type 属性为 treemap ,series.type 描述了数据列类型.默认值为 " ...
- ASP.NET Core 6框架揭秘实例演示[12]:诊断跟踪的进阶用法
一个好的程序员能够在系统出现问题之后马上定位错误的根源并找到正确的解决方案,一个更好的程序员能够根据当前的运行状态预知未来可能发生的问题,并将问题扼杀在摇篮中.诊断跟踪能够帮助我们有效地纠错和排错&l ...
- Android开源图表之树状图和饼状图的官方示例的整理
最近由于工作需要,所以就在github上搜了下关于chart的三方框架 官方地址https://github.com/PhilJay/MPAndroidChart 由于工作需要我这里整理了一份Ecli ...
- D3树状图给指定特性的边特别显示颜色
D3作为前端图形显示的利器,功能之强,对底层技术细节要求相对比较多. 有一点,就是要理解其基本的数据和节点的匹配规则架构,即enter,update和exit原理,我前面的D3基础篇中有介绍过,不明白 ...
- HD1556Color the ball(树状数组)
Color the ball Time Limit: 9000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)To ...
- hdu 1556:Color the ball(第二类树状数组 —— 区间更新,点求和)
Color the ball Time Limit: 9000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)To ...
- HDU4836 The Query on the Tree(树状数组&&LCA)
由于智力的问题,百度之星完全lu不动..开场看第一题根据题目给的条件我觉得一定是可以构造出来的,题目给的意思颇有鸽巢原理的感觉,于是觉得开场第一题应该就是智力构造题了,想了半个小时,发现完全想不动,于 ...
- Codeforces Round #225 (Div. 1) C. Propagating tree dfs序+树状数组
C. Propagating tree Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/383/p ...
- GTK+中的树状列表构件(GtkTreeView)
GTK+中的树状列表构件(GtkTreeView) GTK+中的树状列表构件(GtkTreeView) 在本章的GTK+程序设计教程中,我们将向大家重点介绍非常常用也有点复杂的构件--GtkTreeV ...
- 【 SPOJ - GRASSPLA】 Grass Planting (树链剖分+树状数组)
54 种草约翰有 N 个牧场,编号为 1 到 N.它们之间有 N − 1 条道路,每条道路连接两个牧场.通过这些道路,所有牧场都是连通的.刚开始的时候,所有道路都是光秃秃的,没有青草.约翰会在一些道 ...
随机推荐
- 攻防世界Web篇——unserialize3
知识点: 序列化与反序列化维基百科: 序列化(serialization)在计算机科学的数据处理中,是指将数据结构或对象状态转换成可取用格式(例如存成文件,存于缓冲,或经由网络中发送),以留待后 ...
- VSCode STM32跨平台开发环境搭建
VSCode的强大不用多说了,直接上教程: 一.到官网下载安装VSCode 二.安装完成后,打开VSCode,安装PlatformIO IDE 插件 三.安装完重启VSCode,VSCode会继续安装 ...
- 「SOL」旧试题 (LOJ/SDOI)
数论+图论,妙不可言 # 题面 给定 \(A,B,C\),求: \[\sum_{i=1}^A\sum_{j=1}^B\sum_{k=1}^C\sigma_0(ijk) \] 数据规模:\(A,B,C\ ...
- textarea兼容问题
一.IOS 中不允许输入 <textarea contenteditable="true"></textarea> textarea { -webkit-u ...
- Flask----常用路由系统及自定义路由系统
@app.route('/user/<username>') @app.route('/post/<int:post_id>') @app.route('/post/<f ...
- [杂谈吐槽]UE国内社区环境
此篇博客是我个人想法,当然也是不争的事实,如果您有意见,那您也是我说那些人其中的一员. --此部分为社区环境差最恶劣的原因-- 国内的虚幻社区环境可以说不能再烂了,虚幻商城和虚幻引擎的蓝图是非常强大的 ...
- 第15章 授权:保护您的应用程序(ASP.NET Core in Action, 2nd Edition)
本章包括 使用授权控制谁可以使用你的应用 对策略使用基于声明的授权 创建自定义策略以处理复杂的需求 根据所访问的资源授权请求 隐藏用户未经授权访问的Razor模板中的元素 在第14章中,我向您展示了如 ...
- 1、HTTP的基本概念与交互模型
1.上网的整个过程 假设我们点击了某网页上的一个链接,指向清华大学院系设置,其URL是:http://www.tsinghua.edu.cn/chn/yxsz/index.html.我们来分析一下整个 ...
- 字节过滤流 缓冲流-->BufferedInputStream用法
1创建字节输入节点流FileInputStream fis = new FileInputStream("文件读取的路径");2创建字节输入过滤流,包装一个字节输入节点流Buffe ...
- Java数据类型基础
Java 数据类型基础 数据类型 强类型语言 要求变量的使用要严格符合规定,所有变量必须先定义后使用 Java数据分为两大类 基本类型(primitive type) 数值类型 整数类型 byte(1 ...