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'設(shè)置', pos=(80, 70)) self.Bind(wx.EVT_BUTTON, self.click1, self.btn1) self.btn2 = wx.Button(panel, 202, u'設(shè)置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 時(shí)就隱藏 控件,就會(huì)照成錯(cuò)位
比如這樣
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()
想要這種布局結(jié)果
實(shí)際是這種布局結(jié)果
要想控件按預(yù)設(shè)的位置顯示,就不能在init里直接執(zhí)行 hide 方法。
要在 Frame 顯示完成后,再進(jìn)行隱藏(調(diào)用afterload)。
代碼優(yōu)化如下
# 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): # 根據(jù)數(shù)據(jù)情況再次調(diào)整控件 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 顯示完成后,再調(diào)整控件 frame.afterload() app.MainLoop()
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python 比較兩個(gè) CSV 文件的三種方法并打印出差異
這篇文章主要介紹了Python 比較兩個(gè) CSV 文件并打印出差異,本文將討論比較兩個(gè) CSV 文件的各種方法,我們將包括執(zhí)行此操作的最“Pythonic”方式和可幫助簡(jiǎn)化此任務(wù)的外部 Python 模塊,需要的朋友可以參考下2023-06-06Python使用pyinstaller打包含有g(shù)ettext?locales語言環(huán)境的項(xiàng)目(推薦)
最近在用 pyhton 做一個(gè)圖片處理的小工具,順便接觸了gettext,用來實(shí)現(xiàn)本地化化中英文轉(zhuǎn)換,本文通過一個(gè)項(xiàng)目給大家詳細(xì)介紹下,感興趣的朋友跟隨小編一起看看吧2022-01-01在Pytorch中自定義dataset讀取數(shù)據(jù)的實(shí)現(xiàn)代碼
這篇文章給大家介紹了如何在Pytorch中自定義dataset讀取數(shù)據(jù),文中給出了詳細(xì)的圖文介紹和代碼講解,對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2023-12-12分享python中matplotlib指定繪圖顏色的八種方式
這篇文章主要給大家分享的是python中matplotlib指定繪圖顏色的八種方式,在使用matplotlib的pyplot庫進(jìn)行繪圖時(shí),經(jīng)常會(huì)發(fā)現(xiàn)各種開源代碼指定“color”的方式并不一致,下面就向大家展示8種指定color的方式,需要的朋友可以參考一下2022-03-03python實(shí)現(xiàn)微信小程序用戶登錄、模板推送
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)微信小程序用戶登錄、模板推送,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-08-08python 線性回歸分析模型檢驗(yàn)標(biāo)準(zhǔn)--擬合優(yōu)度詳解
今天小編就為大家分享一篇python 線性回歸分析模型檢驗(yàn)標(biāo)準(zhǔn)--擬合優(yōu)度詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-02-02