刷新wx.面板
亲爱的朋友们,
首先,祝大家新年快乐!
在过去的6个月里,我一直在学习Python和Tkinter图形用户界面包,
现在,我正在尝试重写我使用wxPython包编写的程序.
我有一个工具栏、一个面板(所有的"操作"都发生在上面)和一个状态栏.
我的问题是,我如何删除并重新绘制面板?以下是我使用的代码示例:
选择 | 换行 | 行号
- # -*- coding: cp1253 -*-
- from wxPython.wx import *
- import wx
- class ApplicationFrame(wxFrame):
- def __init__(self, parent, ID, title):
- wxFrame.__init__(self, parent, ID, title,
- wxDefaultPosition, wxSize(720, 450))
- self.CreateStatusBar()
- self.SetStatusText(u" StatusBar : Σύντομη περιγραφή της υπό επιλογή λειτουργίας")
- toolbar1 = self.CreateToolBar( wx.TB_HORIZONTAL | wx.TB_TEXT | wx.BORDER_DOUBLE)
- toolbar1.SetToolBitmapSize((70,63))
- toolbar1.SetBackgroundColour("#d5ab6c")
- toolbar1.AddSimpleTool(10, wx.Bitmap('Apothiki_Button.gif'),u" Αποθήκη ",u" Άνοιγμα καταλόγου αποθήκης")
- toolbar1.AddSimpleTool(20, wx.Bitmap('Pelates_Button.gif'),u" Πελάτες ",u" Άνοιγμα καταλόγου πελατών")
- toolbar1.AddSimpleTool(30, wx.Bitmap('Promitheftes_Button.gif'),u" Προμηθευτές ",u" Άνοιγμα καταλόγου προμηθευτών")
- toolbar1.AddSimpleTool(40, wx.Bitmap('Exit_Button.gif'),u" Έξοδος ",u" Έξοδος από το πρόγραμμα")
- toolbar1.Realize()
- EVT_MENU(self,40,self.TimeToQuit)
- EVT_MENU(self,20,self.Pelates)
- EVT_MENU(self,30,self.ChangeColour)
- self.panel=wx.Panel(self,id=50,style=wx.BORDER_SUNKEN,name=" My Panel")
- self.panel.SetBackgroundColour("red")
- self.panel.Show()
- self.panel.Bind(EVT_LEFT_DCLICK,lambda event:self.panel.SetBackgroundColour("blue"))
- def ChangeColour(self,event):
- self.panel.SetBackgroundColour("skyblue")
- self.panel.Refresh(true)
- def Pelates ( self,event):
- pass
- def TimeToQuit(self, event):
- self.Close(true)
- class MyApp(wxApp):
- def OnInit(self):
- frame = ApplicationFrame(NULL, -1, "Midas wx_Python")
- frame.Show(true)
- self.SetTopWindow(frame)
- return true
- app = MyApp(0)
- app.MainLoop()
如您所见,我尝试了两种方法来更改面板的颜色,但没有一种方法
它们工作正常.我注意到,使用Bind方法时,当我在面板上拖动并移动桌面上的另一个窗口时,面板会刷新.
我在Windows Vista上使用的是Python2.5.1.
提前感谢大家!
伊莱亚斯