zoukankan      html  css  js  c++  java
  • Python In Action:一、入门小例子

     Python In Action这本书真是有点猛,一开头就来这么个例子:

     1 import wx
     2 class MyFrame(wx.Frame):
     3     def __init__(self):
     4         wx.Frame.__init__(self,None,-1,'My Frame',size=(300,300))
     5         panel=wx.Panel(self,-1)
     6         panel.Bind(wx.EVT_MOTION,self.OnMove)
     7         wx.StaticText(panel,-1,'Pos:',pos=(10,12))
     8         self.posCtrl=wx.TextCtrl(panel,-1,'',pos=(40,10))
     9     def OnMove(self,event):
    10         pos=event.GetPosition()
    11         self.posCtrl.SetValue("%s ,%s" %(pos.x,pos.y))
    12 if __name__=='__main__':
    13     app=wx.App()
    14     frame=MyFrame()
    15     frame.Show()
    16     app.MainLoop()

    运行结果:

    运行这个程序,在我的机器上会报错:DLL load failed: %1 不是有效的 Win32 应用程序。

    因为我电脑python装的32位,下的是wxpython64位

    只要重新下个32位的wxpython,重新覆盖安装就行了。

    以我的理解:

    首先创建一个Frame类,这个类重写了父类的初始化函数__init__,添加一个面板Panel:panel=Panel(self,-1),self表示父窗口是该Frame,-1是id

    这个程序强大在,鼠标移动的事件绑定直接以一条语句完成:

     panel.Bind(wx.EVT_MOTION,self.OnMove)

    这要是放在java里面,不得先创个监听器:xxxListener,然后在监听器里,实现某个方法:onXXX(XXXEvent),最后再注册监听器。
    相比Python真的是要麻烦许多。

    下一篇:最小的GUI程序
  • 相关阅读:
    构造 BestCoder Round #52 (div.2) 1001 Victor and Machine
    multiset || 线段树 HDOJ 4302 Holedox Eating
    BFS(最短路) HDOJ 4308 Saving Princess claire_
    组合数专题
    余数专题
    数论 HDOJ 5407 CRB and Candies
    异或+构造 HDOJ 5416 CRB and Tree
    构造 HDOJ 5414 CRB and String
    背包DP HDOJ 5410 CRB and His Birthday
    博客贴自定义高亮代码
  • 原文地址:https://www.cnblogs.com/cool-fire/p/4158780.html
Copyright © 2011-2022 走看看