import wx
class App(wx.App): //定义wx.App的子类
defOnInit(self):
frame = wx.Frame(parent=None,title=’Bare’)
frame.Show()
return True
app = App() //创建wx.App子类(App)的实例,实例化
app.MainLoop()
------------------------------------------------------------
frame.Show(True) frame.Show(False)
更简单的实现方式:
app = wx.App()
frame = wx.Frame( None , - 1 , u"Just do it" )
frame.Show()
app.MainLoop()
----------------------------------------------------------------------
#!/usr/bin/env python
import wx
class Frame(wx.Frame):
pass
class App(wx.App):
defOnInit(self):
self.frame= Frame(parent=None, title=’Spare’)
self.frame.Show()
self.SetTopWindow(self.frame)
returnTrue
if __name__ == ’__main__’:
app= App()
app.MainLoop()
SetTopWindow()方法是一个可选的方法,它让wxPython 方法知道哪个框架或对话框将被认为是主要的。一个wxPython程序可以有几个 框架,其中有一个是被设计为应用程序的顶级窗口的。
#!/usr/bin/env python
“””Hello, wxPython! program.”””
import wx
class Frame(wx.Frame): //定义wx.frame的子类
def __init__(self, image, parent=None, id=-1, pos=wx.DefaultPosition, title=’Hello, wxPython!’): temp = image.ConvertToBitmap() size = temp.GetWidth(), temp.GetHeight() wx.Frame.__init__(self, parent, id, title, pos, size) self.bmp = wx.StaticBitmap(parent=self, bitmap=temp)
class App(wx.App):
def OnInit(self): image = wx.Image(‘wxPython.jpg’, wx.BITMAP_TYPE_JPEG) self.frame = Frame(image)
self.frame.Show()
self.SetTopWindow(self.frame)
return True
def main():
app = App()
app.MainLoop()
if __name__ == ’__main__’:
main()
1、定义这个子类
2、在定义的子类中写一个OnInit()方法
3、在你的程序的主要部分创建这个类的一个实例
4、调用应用程序实例的MainLoop()方法。这个方法将程序的控制权转交给wxPython
使用wxFormBuilder:
import wx
import wx.xrc
class testFrame1 (wx.Frame) :
def __init__ ( self , parent ) :
wx.Frame. __init__ ( self , parent , id = wx.ID_ANY, title = u"Test1" , pos = wx.DefaultPosition, size = wx.Size( 500 , 300 ),
style = wx.DEFAULT_FRAME_STYLE | wx.TAB_TRAVERSAL)
self .SetSizeHintsSz(wx.DefaultSize, wx.DefaultSize)
self .SetForegroundColour(wx.SystemSettings.GetColour(wx.SYS_COLOUR_WINDOW))
bSizer4 = wx.BoxSizer(wx.VERTICAL)
self .m_staticText1 = wx.StaticText( self , wx.ID_ANY, u"这是一个文本框" , wx.DefaultPosition, wx.DefaultSize, 0 )
self .m_staticText1.Wrap( - 1 )
self .m_staticText1.SetFont(wx.Font( 13 , 70 , 90 , 90 , False , "STXinwei" ))
bSizer4.Add( self .m_staticText1, 0 , wx.ALL | wx.ALIGN_CENTER_HORIZONTAL, 5 )
self .SetSizer(bSizer4)
self .Layout()
self .Centre(wx.BOTH)
def __del__ ( self ) :
pass
#增加以下代码,进入主程序
if __name__ == '__main__' :
app = wx.App()
frame = testFrame1( None )
frame.Show()
app.MainLoop()
接下来,尝试加入菜单:
Linux和Mac,菜单栏默认都是显示在最上方的。这点要注意。
至于按钮,选项卡等,用的时候再说。布局方面,有点像bootstrap,横切,纵切。接下来就是函数调用了。发现自己前端做出来会很丑,而web做桌面,一直没有一个通用的合适的框架,网易的HeX好像还可以,改天要试试看,如果web做跨平台桌面,能够调用python函数就好了,因为只会用python写函数。
感慨一下:什么时候XCode能够用原生swift,storyboard写跨平台桌面哇,swift写UI,python写算法,这大概就是我的开发理想了吧。
控件调用函数,大同小异,声明事件,链接函数,获取值。