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 细节. 解题不考虑兼容性,题目天马行空,想到什么说什么,如果解题 ...
随机推荐
- JSP/Servlet(一)
JSP/Servlet(一) Web应用和web.xml文件: 一.构建Web应用: 1.在任意目录下创建一个文件夹. 2.在第1步所建的文件夹内建一个WEB-INF文件夹(注意大小写). 3.进 ...
- 如何使用矩阵乘法加速动态规划——以[SDOI2009]HH去散步为例
对这个题目的最初理解 开始看到这个题,觉得很水,直接写了一个最简单地动态规划,就是定义 f[i][j]为到了i节点路径长度为j的路径总数, 转移的话使用Floyd算法的思想去转移,借助这个题目也理解了 ...
- Jcompress: 一款基于huffman编码和最小堆的压缩、解压缩小程序
前言 最近基于huffman编码和最小堆排序算法实现了一个压缩.解压缩的小程序.其源代码已经上传到github上面: Jcompress下载地址 .在本人的github上面有一个叫Utility的re ...
- HDU 2080 夹角有多大II
夹角有多大II Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Sub ...
- java_JDBC(2)
1.Statement 每次执行sql语句,数据库都要执行sql语句的编译 ,最好用于仅执行一次查询并返回结果的情形,效率高于PreparedStatement. 2.PreparedStatemen ...
- ArcGIS Pro 简明教程(3)数据编辑
ArcGIS Pro 简明教程(3)数据编辑 by 李远祥 数据编辑是GIS中最常用的功能之一,ArcGIS Pro在GIS数据编辑上使用习惯有一定的改变,因此,本章可以重点看看一些编辑工具的使用和使 ...
- PHP面向对象——GD库实现图片水印和缩略图
今天的实现目标就是使用GD库完成对图片加水印和图 片缩略图两个功能 动身前逻辑准备 属性: 路径 功能: 构造方法 生成水印的方法 获取 图片信息 获取位置信息(123 456 789) 创建图片资源 ...
- 时间戳 获得当前时间 -iOS
//获取当前时间戳 static inline NSString * getTimeStamp(){ NSTimeInterval d=[[NSDate date] timeIntervalSince ...
- WEB前端性能优化之一——网页级优化
1.减少Http请求 http请求是指从客户端到服务器端的请求消息.其中包含对html.css.js.图片资源以及交互数据处理内容等.在前端性能网页级优化中较少http请求是非常重要的一块,每当我们提 ...
- webqq的注册登记和聊天页面--运用jsonp跨域
简介: 我们知道,ajax用于数据交互,但它不能跨域,跨域是指从一个域名的网页去请求另一个域名的资源.比如从http://www.baidu.com/ 页面去请求 http://www.google. ...