Windows开发( Python )中遇到的一些问题

转载请注明出处,http://blog.csdn.net/Bule_Zst/article/details/77148705

最近,因为公司(父亲)的某些特别需求,需要自己开发一款面向windows的软件,因为比较小型,果断选择了python(Boa + wxPython + PyInstaller),在开发过程中,遇到了很多问题,这里做一个总结。

入门教程:
BOA constructor安装与使用
PyInstaller(windows开发,打包python软件为exe)使用教程


wxPython

  • 为DirDialog设置默认打开目录

    dlg = wx.DirDialog(self, u"选择文件夹", style = wx.DD_DEFAULT_STYLE, defaultPath = u"d:\\" )

    PS: 通过设置 defaultPath = os.getcwd() 可默认打开当前文件所在目录

  • 按钮点击事件传参方法

    • 第一种,将 self.button1.Bind(wx.EVT_BUTTON, self.OnButton1Button,
      id=wxID_FRAME1BUTTON1)
      中的 self.OnButton1Button换成 lambda evt, mark=2 : self.OnButton1Button(evt,mark),2就是传进去的参数,记得在OnButton1Button函数中的添加mark参数。

    • 第二种,在OnButton1Button(self, event)函数中,通过event.GetEventObject()可获取触发事件的组件。
  • 在Onclick点击事件中循环批量为scrolledPanel中的组件改变颜色,只有当全部设置完后,颜色才会被改变。

    • 解决方法:
    • 无意中发现,当scrolledPanel滚动条位置发生改变时,修改的颜色会被显示出来,因此,在每次修改颜色后加上 self.scrolledPanel2.Scroll(0, 2) self.scrolledPanel2.Scroll(0, 0) 来实现立即显示修改的颜色。
  • 为TextCtrl设置内容改变事件,self.textCtrl1.Bind(wx.EVT_TEXT, self.onTextCtrlValueChange ) (用Boa生成的代码会自动添加id参数,导致该语句失效,遇到这种情况,删掉id即可)


Boa

  • 必须保持它自带的程序架构,如Frame中的init_ctrls + __init__ 结构,否则会报错。

  • 若在自定义函数中添加组件(如Button)报错,只需要将代码放到_init_ctrls中即可

  • 添加组件传参的时候,只能传入常量,不能传入变量,如

self.button1 = wx.Button(id=wxID_FRAME1BUTTON1, label=str( 10 ), 
name='button1', parent=self.panel1, pos=wx.Point(296, 184), 
size=wx.Size(75, 24), style=0)

上面的不会报错,但是下面的就会报错

i = 10
self.button1 = wx.Button(id=wxID_FRAME1BUTTON1, label=str( i ), 
name='button1', parent=self.panel1, pos=wx.Point(296, 184), 
size=wx.Size(75, 24), style=0)
  • GenStaticText这个组件添加后,关闭编辑窗口会报错,原因是Python默认的是ascii,无法处理非ascii字符。

    解决方法:在python的Lib\site-packages文件夹下新建一个sitecustomize.py,内容为:
# encoding=utf8    
import sys    

reload(sys)    
sys.setdefaultencoding('utf8')

         然后重启Boa

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值