2010-09-09 66 views
2

我想知道的是,如何使用Jython類中的swing創建GUI元素,以便它們可以從類外部引用,並且可以在對象上使用button.setText("Hello")這樣的語句在另一個班級內創建。例如:Jython類和變量作用域

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

您的代碼丟棄了它對控件的引用,因此您無法從任何地方訪問它們 - 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")