Передача аргумента для создания окна с использованием wxpython? - PullRequest
1 голос
/ 17 мая 2010

Я пытаюсь узнать, как сделать графический интерфейс на Python. После онлайн-обучения я обнаружил, что следующий код «работает» при создании пустого окна:

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 голос
/ 17 мая 2010

Элементы sys.argv являются строками; вам нужно преобразовать их в целые числа перед их использованием. Рассмотрите возможность передачи их конструктору, вместо того чтобы полагаться на глобальное состояние.

...