Python Jython-尝试从JFrame调用函数,接收';非类型';错误

Python Jython-尝试从JFrame调用函数,接收';非类型';错误,python,swing,jython,Python,Swing,Jython,所以我在和Jython玩,试着组装一个通用的GUI。除了Jython Wiki上的swing示例之外,没有其他内容。所以我声明了一个JFrame,然后尝试添加一个面板,一些文本字段,所有这些好东西。然而,当我运行它时,我得到了这个错误。“'NoneType'对象没有属性'add'” 这是我的基本代码 from javax.swing import * frame = JFrame('E-mail Gathering', defaultCloseOperation = JFrame.EXIT_ON

所以我在和Jython玩,试着组装一个通用的GUI。除了Jython Wiki上的swing示例之外,没有其他内容。所以我声明了一个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是有问题的,但我知道事实并非如此,因为如果我不尝试添加任何内容,它会创建一个很好的框架

感谢您的建议。

在这一行:

frame = JFrame('E-mail Gathering', defaultCloseOperation = JFrame.EXIT_ON_CLOSE, size =(600,400), locationRelativeTo = None).setVisible(True)
您正在创建一个
JFrame
,调用其
setVisible
方法,并将
setVisible
的返回值分配给
frame
,所以
frame
None
。这会导致帧添加失败

在最后调用
setVisible
时,由于您可能不想在添加其他组件并调用
pack
之前使框架可见,只需删除
setVisible
调用:

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

您可能已经知道这一点,但不应该使用foo import*中的
,除非在玩具脚本或解释器中用作速记。即使这样,这也可以说是一个坏主意。实际上我是一个完全的新手,我没有任何线索。你应该如何把它放进去,为什么我这样做不好?只导入你需要的,以避免名称冲突/歧义,例如在
java.util.List
java.awt.List
之间。