Jython - 尝试从JFrame调用函数,接收'NoneType'错误

时间:2010-10-03 14:26:06

标签: python swing jython

所以我正在玩Jython,尝试将通用GUI拼凑在一起。没有超出他们在Jython Wiki上的内容了。所以我声明了一个JFrame,然后尝试添加一个面板,一些文本字段,所有这些好东西。但是,当我运行它时,我收到此错误。 “'NoneType'对象没有属性'add'”

这是我的基本代码。

from javax.swing import *
frame = JFrame('E-mail Gathering', defaultCloseOperation = JFrame.EXIT_ON_CLOSE, size =(600,400), locationRelativeTo = None).setVisible(True)
pnl = JPanel()
frame.add(pnl)
self.textfield1 = JTextField('username:',15)
pnl.add(self.textfield1)
self.textfield2 = JTextField('password:', 15)
pnl.add(self.textfield2)
mailButton = JButton('Login',actionPerformed=self.checkmail)
pnl.add(mailButton)
frame.pack()
frame.setVisible(True)

我知道崩溃的相关部分是'frame.add(pnl)',但上述错误。我想我会把其余部分扔到那里以防万一我犯了更大的错误。我觉得错误的地方在于我没有正确地将框架声明为JFrame,但我知道情况并非如此,因为如果我不尝试添加任何内容,它会创建框架。

感谢您提供任何建议或建议。

1 个答案:

答案 0 :(得分:1)

在这一行:

frame = JFrame('E-mail Gathering', defaultCloseOperation = JFrame.EXIT_ON_CLOSE, size =(600,400), locationRelativeTo = None).setVisible(True)

您正在创建JFrame,调用其setVisible方法,并将setVisible的返回值分配给framesetVisible doesn't return a valueframeNone。这会导致frame.add失败。

无论如何,当您在最后调用setVisible时,并且因为您可能不希望在向其添加其他组件并调用pack之前使框架可见,只需删除{{ 1}}来电:

setVisible