传递参数使用wxpython创建窗口?

时间:2010-05-17 03:38:35

标签: python winapi wxpython wxwidgets

我正在尝试学习如何在Python中创建GUI。在线教程之后,我发现以下代码在创建空窗口时“起作用”:

import wx
from sys import argv

class bucky(wx.Frame):
    def __init__(self, parent, id):
        wx.Frame.__init__(self, parent, id, 'Frame aka window', size=(300, 200))

if __name__=='__main__':
    app=wx.PySimpleApp()
    frame=bucky(parent=None,id=-1)
    frame.Show()
    app.MainLoop()

这给了我一个很棒的窗口。但是,如果我想将一个参数传递给程序以确定窗口大小,该怎么办?我认为这样的事情应该做的伎俩:

import wx
from sys import argv

script, x, y = argv

class mywindow(wx.Frame):
    def __init__(self, parent, id):
        wx.Frame.__init__(self, parent, id, 'Frame aka window', size=(x, y))

if __name__=='__main__':
    app=wx.PySimpleApp()
    frame=mywindow(parent=None,id=-1)
    frame.Show()
    app.MainLoop()

但是,唉,这不起作用!我一直收到以下错误:

Traceback <most recent call last):
    File "C:\DOCUME~1\OWNER\DESKTOP\pw2.py", line 12, in <module>
        frame=mywindow(parent=None, id=-1)
    File "C:\DOCUME~1\OWNER\DESKTOP\pw2.py", line 8, in __init__
        wx.Frame.__init))(self.parent, id, 'Frame aka window', size=(x, y))
    File "C:\Python26\lib\site-packagaes\wx-2.8-msw-unicode\wx\_widows.py", line 5
05, in __init__
    _windows_.Frame_swiginit(self, _windows_.new_Frame(*args, **kwargs))
TypeError: Expected a 2-tuple of integers or a wxSize object.

如上所述,如何根据用户输入创建窗口?

1 个答案:

答案 0 :(得分:1)

sys.argv的元素是字符串;你需要在使用它们之前将它们转换为整数。考虑将它们传递给构造函数,而不是依赖于全局状态。

相关问题