【问题标题】:Jython classes and variable scopeJython 类和变量范围
【发布时间】:2010-09-09 22:25:45
【问题描述】:

我想知道的是,如何在 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 中的文本。

【问题讨论】:

    标签: swing jython


    【解决方案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")
    

    【讨论】:

      猜你喜欢
      • 2010-12-21
      • 2011-08-24
      • 1970-01-01
      • 2014-01-31
      • 2012-02-24
      • 2014-04-05
      • 2014-03-21
      • 2013-01-16
      • 2012-05-10
      相关资源
      最近更新 更多