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 细节. 解题不考虑兼容性,题目天马行空,想到什么说什么,如果解题 ...
随机推荐
- jQuery事件触发和参数传递
jQuery事件触发和参数传递: 参考:http://www.jb51.net/article/36249.htm <%@ page language="java" impo ...
- Chrome控制台详解
Chrome控制台详解 http://www.codeceo.com/article/chrome-console.html console.log('%casdf','font-size:16px; ...
- hadoop在windows下安装运行
1.下载windows环境下编译的hadoop-2.7.2.x64win.zip 2.解压至D:\BigData\hadoop-2.7.2 3.修改D:\BigData\hadoop-2.7.2\et ...
- 在ubuntu linux 中编写一个自己的bash脚本
在ubuntu linux 中编写一个自己的简单的bash脚本. 实现功能:终端中输入简单的命令(以pm为例(play music)),来实现音乐的播放.注:本人ununut中安装了audacious ...
- 《JAVASCRIPT高级程序设计》DOM扩展
虽然DOM为XML及HTML文档交互制定了一系列的API,但仍然有几个规范对标准的DOM进行了扩展.这些扩展中,有很多是浏览器专有的,但后来成了事实标准,于是其他浏览器也提供了相同的实现:浏览器开发商 ...
- 蓝桥网试题 java 入门训练 序列求和
---------------------------------------------------------------------------------------------------- ...
- 读书笔记 effective c++ Item 6 如果你不想使用编译器自动生成的函数,你需要明确拒绝
问题描述-阻止对象的拷贝 现实生活中的房产中介卖房子,一个服务于这个中介的软件系统很自然的会有一个表示要被销售的房屋的类: class HomeForSale { ... }; 每个房产中介会立刻指出 ...
- JavaWeb验证码的使用
在Java Web开发中,我们经常需要使用到验证码功能,一般情况下,我们可以将产生的验证码保存到服务器端中的session中,这种方式中,是使用服务器来保证验证码的功能.另外,我们也可以采用js产生验 ...
- hadoop-hdfs体系结构
HDFS作为Hadoop的核心技术之一,HDFS(Hadoop Distributed File System, Hadoop分布式文件系统)是分布式计算中数据存储管理的基础.具有高容错高可靠性.高可 ...
- 如何在shell脚本中导出数组供子进程使用
功能说明:设置或显示环境变量. 语 法:export [-fnp][变量名称]=[变量设置值] 补充说明:在shell中执行程序时,shell会提供一组环境变量.export可新增,修改或删除环境变量 ...