如何在wxpython中传递参数创建窗口?
我正在学习如何用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 个回答
1
sys.argv
里的元素都是字符串;在使用它们之前,你需要把它们转换成整数。不过,考虑一下直接把它们传给构造函数,而不是依赖全局状态。