我的编程空间,编程开发者的网络收藏夹
学习永远不晚

WxPython中控件隐藏与显示的小技巧

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

WxPython中控件隐藏与显示的小技巧

WxPython控件隐藏与显示

WxPython 的控件,除了有Disable() 和 Enable()方法,还有hide及show方法,在固定位置的布局,Hide 和 Show()工作正常 。

比如这样

import wx
 
class MyButton(wx.Frame):
    flag = True
 
    def __init__(self, parent, id, title):
        wx.Frame.__init__(self, parent, id, title)
        panel = wx.Panel(self, -1, size=(300, 250))
        self.btn1 = wx.Button(panel, 201, u'设置', pos=(80, 70))
        self.Bind(wx.EVT_BUTTON, self.click1, self.btn1)
        self.btn2 = wx.Button(panel, 202, u'设置2', pos=(180, 70))
        self.Bind(wx.EVT_BUTTON, self.click2, self.btn2)
        self.Centre()
        self.btn2.Hide()
 
    def click1(self, e):
        print("btn1 click!")
        if self.flag:
            self.btn2.Hide()
            self.flag = False
        else:
            # self.btn2.Disable()
            self.btn2.Show()
            self.flag = True
 
    def click2(self, e):
        print("btn2 click!")
 
 
if __name__ == '__main__':
    app = wx.App()
    frame = MyButton(None, -1, u'按钮示例')
    frame.Show()
    app.MainLoop()

但如果使用wx.BoxSizer 的 EXPAND 布局 , 如果init 时就隐藏 控件,就会照成错位

比如这样

import wx
 
class MyButton(wx.Frame):
    flag = True
    def __init__(self,parent,id,title):
        wx.Frame.__init__(self,parent,id,title)
        panel=wx.Panel(self,-1,size=(300,250))
        box = wx.BoxSizer(wx.HORIZONTAL)
        self.btn1 = wx.Button(panel, -1, 'Button1')
        self.btn2 = wx.Button(panel, -1, 'Button2')
        self.btn3  = wx.Button(panel, -1, 'Button3')
        box.Add(self.btn1 , 1, wx.ALL, 30)
        box.Add(self.btn2 , 0, wx.EXPAND)
        box.Add(self.btn3 , 0, wx.ALIGN_CENTER)
        self.Bind(wx.EVT_BUTTON, self.click1, self.btn1)
        self.Bind(wx.EVT_BUTTON, self.click2, self.btn2)
        panel.SetSizer(box)
        self.Center()
        self.btn2.Hide()
 
 
    def click1(self,e ):
        print("btn1 click!")
        if self.flag:
            self.btn2.Hide()
            self.flag = False
        else:
            # self.btn2.Disable()
            self.btn2.Show()
            self.flag = True
    def click2(self,e):
        print("btn2 click!")
 
 
if __name__=='__main__':
    app=wx.App()
    frame=MyButton(None,-1,u'按钮示例')
    frame.Show()
    app.MainLoop()

想要这种布局结果

实际是这种布局结果

要想控件按预设的位置显示,就不能在init里直接执行 hide 方法。

要在 Frame 显示完成后,再进行隐藏(调用afterload)。

代码优化如下

# encoding: utf-8
"""
@author: 陈年椰子
@contact: hndm@qq.com
@version: 1.0
@project:test 
@file: wxgui3.py
@time: 2022-1-14 11:16
说明
"""
 
# coding: utf-8
 
import wx
 
class MyButton(wx.Frame):
    flag = True
    def __init__(self,parent,id,title):
        wx.Frame.__init__(self,parent,id,title)
        panel=wx.Panel(self,-1,size=(300,250))
        box = wx.BoxSizer(wx.HORIZONTAL)
        self.btn1 = wx.Button(panel, -1, 'Button1')
        self.btn2 = wx.Button(panel, -1, 'Button2')
        self.btn3  = wx.Button(panel, -1, 'Button3')
        box.Add(self.btn1 , 1, wx.ALL, 5)
        box.Add(self.btn2 , 0, wx.EXPAND)
        box.Add(self.btn3 , 0, wx.ALIGN_CENTER)
        self.Bind(wx.EVT_BUTTON, self.click1, self.btn1)
        self.Bind(wx.EVT_BUTTON, self.click2, self.btn2)
        panel.SetSizer(box)
        self.Center()
 
 
 
    def afterload(self):
        # 根据数据情况再次调整控件
        self.flag = False
        self.btn2.Hide()
 
    def click1(self,e ):
        print("btn1 click!")
        if self.flag:
            self.btn2.Hide()
            self.flag = False
        else:
            self.btn2.Show()
            self.flag = True
    def click2(self,e):
        print("btn2 click!")
 
 
if __name__=='__main__':
    app=wx.App()
    frame=MyButton(None,-1,u'按钮示例')
    frame.Show()
    # frame 显示完成后,再调整控件
    frame.afterload()
    app.MainLoop()

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

WxPython中控件隐藏与显示的小技巧

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

labview隐藏的控件如何显示

要显示LabVIEW中隐藏的控件,可以按照以下步骤操作:1. 在LabVIEW的界面上,右击或者长按鼠标左键,选择"Visible Items",然后选择"Hidden Controls"。这将显示出当前界面上所有隐藏的控件。2. 如果你只
2023-09-15

Android开发 -- 控件的显示与隐藏 setVisibility View.VISIBLE View.INVISIBLE View.GONE

在Android中setVisibility作为显示和隐藏的属性,一般我们呢都是在代码中进行操作,例如: [code] this.mItem.setVisibili
2022-06-06

Windows隐藏系统文件的几个小技巧

1、最简单的方法右击想要隐藏的文件或文件夹,在弹出的菜单中选取“ 属性”,然后在属性窗口的复选框中选中“隐藏”。接着在“ 我的电脑”或“资源管理器&rdqu
2023-05-30

7个Python中的隐藏小技巧分享

Python是每个程序员都喜欢的语言,因为它易于编码和易于阅读的语法。但是,你知道python有一些很酷的技巧可以用来让事情变得更简单吗?在今天的内容中,我将与你分享7个你可能从未使用过的Python技巧
2023-03-20

微信小程序中视频的显示与隐藏功能

这篇文章主要介绍了微信小程序中视频的显示与隐藏,思路大概是定义一个标记变量,控制视频的播放与暂停,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
2022-11-13

win7与xp系统中如何显示隐藏的文件

隐藏的文件夹怎么显示?相信很多电脑新手朋友都会问这个问题,比如我们一般可以看到C盘系统盘里的系统文件是隐藏的,那么如何查看已经隐藏了的文件或曾经自己将文件夹设置为隐藏,要查看,怎么让隐藏文件显示出来呢?Windows xp系统下隐藏的文件夹
2023-05-29

怎么利用vue控制元素的显示与隐藏

这篇文章主要介绍了怎么利用vue控制元素的显示与隐藏的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么利用vue控制元素的显示与隐藏文章都会有所收获,下面我们一起来看看吧。 方法:使用 v-if 指令,通过动态
2023-07-04

Android Dialog中软键盘的显示与隐藏的示例

1.写在前面 本篇的主要内容是关于在Dialog中软键盘的显示与隐藏问题,需求是在Dialog中有一个密码输入框,弹出Dialog显示软键盘,关闭Dialog隐藏软键盘。 嗯,是不是有点简单,不过在实现的过程中还是遇到了一些问题,在试过了网
2022-06-06

Xamarin.Forms中如何控制活动指示器的显示隐藏

小编给大家分享一下Xamarin.Forms中如何控制活动指示器的显示隐藏,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Xamarin.Forms中活动指示器的显
2023-06-04

解析CSS中元素的显示和隐藏技术

CSS中的元素显示和隐藏技术解析在网页开发中,经常会遇到需要动态控制元素的显示和隐藏的需求。CSS提供了多种方法来实现这一功能,本文将详细解析这些技术,并提供具体的代码示例。一、display属性display: nonedispl
解析CSS中元素的显示和隐藏技术
2024-02-02

微信小程序动态的显示或隐藏控件的方法(两种方法)

在微信小程序开发时,经常要用到一个控件会根据不同的情况和环境动态显示与隐藏这种情况,下面就来实践一把!上效果先它的实现方法有两种,第一种方法:单选法,就是隐藏与显示根据条件二选一,代码如下:2023-05-31

vue table表格中如何控制下拉框的显示隐藏

这篇文章主要介绍了vue table表格中如何控制下拉框的显示隐藏问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
2023-01-18

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录