在重新定位位图按钮后,在我的wxPython代码中使用time.sleep导致我的按钮完全变为空白。只有一个白色空间留在了按钮所在的区域。任何人都可以解释原因并提出任何解决方案吗?这是我的代码:
import wx
import time
class gui(wx.Frame):
def __init__(self,parent,id):
wx.Frame.__init__(self,parent,id,'New Window',pos=(0,0),size=wx.DisplaySize())
panel=wx.Panel(self)
self.SetBackGroundColour('green')
self.pic=wx.BitmapButton(self,-1,wx.Image("Candle.jpg",wx.BITMAP_TYPE_ANY).ConvertToBitmap(),pos=(700,300))
self.Bind(wx.EVT_BUTTON,self.position,self.pic)
def positon(self,event):
self.pic.Hide()
self.pic=wx.BitmapButton(self,-1,wx.Image("Candle.jpg",wx.BITMAP_TYPE_ANY).ConvertToBitmap(),pos=(700,300))
time.sleep(2)
self.pic.Hide()
if __name__=='__main__':
app=wx.PySimpleApp()
frame=gui(None,-1)
frame.Show()
app.MainLoop()
答案 0 :(得分:2)
嗯,难怪你的按钮会变成空白,你已经编程好了。
self.pic.Hide() => hides the button
self.pic=wx.BitmapButton(self,-1,wx.Image("Candle.jpg",wx.BITMAP_TYPE_ANY).ConvertToBitmap(),pos=(700,300)) => displays the button once again
time.sleep(2) => takes a brake for 2 seconds
self.pic.Hide() => hides the button again
结论是,您的按钮不会显示。所以我没有看到问题是什么,因为它完全符合你的编程。
答案 1 :(得分:1)
答案 2 :(得分:0)
答案 3 :(得分:0)
sleep
正在阻止,因此执行会停留在您的位置方法中两秒钟,并且无法返回MainLoop来处理其他事件,例如将更改绘制到屏幕上。两秒钟后,图像被隐藏,但从未被绘制过。
要获得您想要的效果,您必须启动计时器,并将计时器绑定到可以再次显示StaticBitmap
的处理程序。
顺便说一句,您也可以再次调用Show
而不是创建新控件,它的父级也应该是面板,而不是框架。