如何在wxpython中传递参数创建窗口?

1 投票
1 回答
819 浏览
提问于 2025-04-15 22:46

我正在学习如何用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里的元素都是字符串;在使用它们之前,你需要把它们转换成整数。不过,考虑一下直接把它们传给构造函数,而不是依赖全局状态。

撰写回答