wxpython tab切换页面
最近没事学习下wxpython,发现很少有关于页面切换的demo,这边分享下2中切换的方法。
第一种:利用wx.Notebook
第二种:利用Sizer布局实现(自己写的),代码没有涉及到什么重构之类的优化,只是说下本人的思想方法,希望为博友提出建议。
第一次随笔,废话不多说直接上代码吧
第一种方法:
#coding=utf-8
import wx
class Myframe(wx.Frame):
def __init__(self):
wx.Frame.__init__(self,None,-1)
nb=wx.Notebook(self)
pane1_1=wx.Panel(nb,-1)
wx.StaticText(pane1_1, label='i am pane1_1')
pane1_2 = wx.Panel(nb, -1)
wx.StaticText(pane1_2, label='i am pane1_2')
pane1_3 = wx.Panel(nb, -1)
wx.StaticText(pane1_3, label='i am pane1_3')
map(nb.AddPage,[pane1_1,pane1_2,pane1_3],["pane1_1","pane1_2","pane1_3"])
app=wx.PySimpleApp()
frame=Myframe()
frame.Show(True)
app.MainLoop()
第二种方法(利用Sizer):
#coding=utf-8
import wx
import wx.html
import os
from fun import login
text1='''
<html>
<head>
<title>Page title</title>
</head>
<body>
<p align="center" id="firstpara" style="color: crimson">
This is hello
</p>
</body>
</html> '''
text2='''
<html>
<head>
<title>Page title</title>
</head>
<body>
<p align="center" id="firstpara" style="color: crimson">
This is the
</body>
</html> '''
text3='''
<html>
<head>
<title>Page title</title>
</head>
<body>
<p align="center" id="firstpara" style="color: crimson">
This is world
</body>
</html> '''
class Myframe(wx.Frame):
def __init__(self):
wx.Frame.__init__(self,None,-1)
self.all_SizerItem=[]
self.panel=wx.Panel(self,-1)#主panel
self.hox=wx.BoxSizer(wx.VERTICAL)#垂直布局
self.create_button()#第一行button行
self.create_tap_item()#第二行item行
self.panel.SetSizer(self.hox)
self.hox.Layout()
self.create_Menu()
self.create_Toolbar()
def create_tap_item(self):
button_item=["hello","the","world"]
for i,each in enumerate(button_item):
child_panel = wx.Panel(self.panel, -1)#新建子panel
panel_child_hox=wx.BoxSizer(wx.HORIZONTAL)
html = wx.html.HtmlWindow(child_panel)
if i==0:
text=text1
elif i==1:
text=text2
else:
text=text3
html.SetPage(text)
# html.SetBackgroundColour(wx.RED)
panel_child_hox.Add(html,1,wx.EXPAND|wx.ALL,0)
child_panel.SetSizer(panel_child_hox)
self.hox.Add(child_panel,1,wx.EXPAND|wx.ALL,20)#把item下的子panel添加Sizer
if i!=0:
self.hox.Hide(child_panel)#隐藏不是第一列的item
self.all_SizerItem.append((each,child_panel))#将所有的item下的子panel添加进列表
def create_button(self):
child_panel = wx.Panel(self.panel, -1)#创建一个子panel
self.hox_button = wx.BoxSizer(wx.HORIZONTAL) # 按钮水平布局
button = wx.Button(child_panel, -1, "hello")
button1 = wx.Button(child_panel, -1, "the")
button2 = wx.Button(child_panel, -1, "world")
self.hox_button.Add(button, proportion=0, flag=wx.ALL, border=0)
self.hox_button.Add(button1, proportion=0, flag=wx.ALL, border=0)
self.hox_button.Add(button2, proportion=0, flag=wx.ALL, border=0)
child_panel.SetSizer(self.hox_button)
self.Bind(wx.EVT_BUTTON, self.Register)
self.hox.Add(child_panel,0,wx.EXPAND)#把新建的子panel添加Size
def create_Toolbar(self):
statusBar = self.CreateStatusBar()
toolbar = self.CreateToolBar()
add = toolbar.AddSimpleTool(wx.NewId(), wx.Bitmap("./pic/folder.png"), "New", "long help for 'New'")
edit = toolbar.AddSimpleTool(wx.NewId(), wx.Bitmap("./pic/folder.png"), "Edit", "long help for 'Edit'")
toolbar.Realize()
def create_Menu(self):
menuBar = wx.MenuBar()
menu1 = wx.Menu()
menuItem = menu1.Append(-1, "&Quit", "&Quit")
menuItem1 = menu1.Append(-1, "&Quit1", "&Quit1")
menuBar.Append(menu1, "&File")
self.SetMenuBar(menuBar)
def Register(self,event):
label=wx.FindWindowById(event.GetId()).GetLabelText()
for each,item in self.all_SizerItem:
if each!=label:
self.hox.Hide(item)#如果不是button label显示的item隐藏
else:
check_item=item
self.hox.Show(check_item)
self.panel.Layout()#重新布局
app=wx.PySimpleApp()
frame=Myframe()
frame.Show(True)
app.MainLoop()
wxpython tab切换页面的更多相关文章
- VUE 实现tab切换页面效果
一 163邮箱登录tab切换 <!DOCTYPE html> <html lang="en"> <head> <meta charset= ...
- mui 登录之后tab切换页面会失灵
我的app做完刚进去的时候底部导航栏的tab切换是正常的,但是退出之后重新登录,我在首页用reload进行了刷新,之后就引发了一些问题,tab切换有时候会失灵,登录转态的改变不成功.原来是reload ...
- flutter tab切换页面防止重置
问题描述:TabBar 配合TabBarView切换页面,然后每个页面是一个listview加载数据,但是切换页面后listview的数据会被重置, 重新被加载了,解决办法使用 with Automa ...
- EasyUI两种动态添加tab Iframe页面的方法
/** 动态添加tab-----方式一 **/ function addIframeTab(titleTxt,href,icon) { $('#mytabs').tabs('addIframeTab' ...
- echarts tab 切换问题整理
一.bootstrap tabs 解决方案 方式一 tab切换echarts无法正常显示 https://blog.csdn.net/cjs68/article/details/78072382 ta ...
- tab切换echarts无法正常显示问题
项目中使用到了Echarts来在展示图表,两个tab切换页面中都存在图表,页面加载完成后 对所有图表进行了初始化和绘制,然后切换查看时,发现图表的宽度不正确.,第一个tab显示是很正常的,但是第二个t ...
- uniapp使用scroll-view与swiper组件实现tab滑动切换页面需要注意的问题
效果图: tab栏可以滑动,切换页面跟随tab栏同步滑动.这里需要注意的是使用swiper组件时,它会有一个默认的高度,你必须动态的获取数据列表的高度覆盖原来的默认高度. 下面是代码 html < ...
- 19 Flutter 自定义AppBar 定义顶部Tab切换 底部Tab结合顶部Tab实现类似头条页面布局(27分36秒)
Flutter AppBar自定义顶部导航按钮图标.颜色以及TabBar定义顶部Tab切换. leading:在标题前面显示的一个控件,在首页通常显示应用的logo:在其他界面通常显示为付汇按钮. t ...
- 谈谈一些有趣的CSS题目(八)-- 纯CSS的导航栏Tab切换方案
开本系列,谈谈一些有趣的 CSS 题目,题目类型天马行空,想到什么说什么,不仅为了拓宽一下解决问题的思路,更涉及一些容易忽视的 CSS 细节. 解题不考虑兼容性,题目天马行空,想到什么说什么,如果解题 ...
随机推荐
- 持续集成的一些讨论(CI)
如何保证程序开发的新功能降低BUG,那就是需要他们自己写用测试工具来写测试用例,包括Mocha(JS).Junit(Java).GTest(C++):而上传到SVN或者GIT后,又如何保证能跟原有的功 ...
- Spring context:component-scan代替context:annotation-config
Spring context:component-scan代替context:annotation-config XML: <?xml version="1.0" encod ...
- css3模拟jq点击事件
还是这个梗,收好冷.今天是一个css3模拟jq点击事件,因为我发现,css3中没有类似于,js的点击事件,那么,可不可以仿照 jq的效果,类似的做一个呢?主要用到,input里面的radio 单选按钮 ...
- javascript中对数据文本格式化的思考
在实际应用场景中,我们常常需将一些数据输出成更加符合人类习惯阅读的格式. 保留小数点后面两位 在一些要求精度没有那么准确的场景下,我们可以直接通过Number.prototype.toFixed()来 ...
- CSS实现的几款不错的菜单栏
前言 自从做了智慧城市这个项目之后,我一个做后端的开发者,瞬间转为前端开发,不过我还是很喜欢前端的.前端那些事,其实蛮有意思的,HTML实现的是静态的,使用ajax之后就可以和数据库交互了,加上js和 ...
- oracle_角色
一. 每个Oracle用户都有一个名字和口令,并拥有一些由其创建的表.视图和其他资源. Oracle角色(role)就是一组权限(privilege) (或者是每个用户根据其状态和条件所需的访问类型) ...
- 循环语句——do…while语句
一.do while语句结构 do { 执行语句 } while (条件表达式); 条件表达式必须是trur或false 二.do while语句特点 不论条件是否满足,都先执行一次执行语句 三.示例 ...
- Error:(2, 0) Plugin with id 'com.github.dcendents.android-maven' not found. <a href="openFile:I:\API\PermissionGen-master\permissiongen\build.gradle">Open File</a>
不上图说个*** 报这个错的原因是因为 你在project中的build.gradle 少写了两句话 所以报这个错 你只需要在build.gradle中添加 classpath 'com.github ...
- 内存管理 (C++)
转:http://hi.baidu.com/%D0%A1%B0%FC%D7%D349/blog/item/de1a8e4fa5eeafc3d0c86a68.html1.进程地址空间 Window ...
- Javascript—②函数
新手Perfect教程之Javascript②教程-函数 前言:上回我们是从hello world开始的,本期将会讲"函数" 在学自定义函数之前,先了解几个已经定义好的函数: 1 ...