Jython类和变量范围

时间:2010-09-09 22:25:45

标签: swing jython

我想知道的是,如何在Jython类中使用swing创建GUI元素,以便可以从类外部引用它们,并且我可以在创建的对象上使用button.setText("Hello")之类的语句在另一个班级里面例如:

foo.py:

 from javax.swing import *
 class Test():

    def __init__(self):
        frame = JFrame("TEST")
        button = JButton("Hey")
        frame.add(button)
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)
        frame.setSize(300,200)
        frame.show()

然后我有另一个名为somethingelse.py的文件:

from foo import *
run = Test()

如果我想使用run.button.setText("Message")更改按钮文字,我如何组织Test()课程,以便我可以更改第二个文件somethingelse.py中的文字。

1 个答案:

答案 0 :(得分:1)

您的代码会丢弃它对控件的引用,因此您无法从任何地方访问它们 - framebutton是局部变量,__init__返回后消失

你应该(最低限度地)使它们成为对象成员:

class Test():

    def __init__(self):
        self.frame = JFrame("TEST")
        self.button = JButton("Hey")
        self.frame.add(button)
        # ...

然后你可以说:

from foo import *
run = Test()
run.button.setText("Message")