Python Jython-尝试从JFrame调用函数,接收';非类型';错误
所以我在和Jython玩,试着组装一个通用的GUI。除了Jython Wiki上的swing示例之外,没有其他内容。所以我声明了一个JFrame,然后尝试添加一个面板,一些文本字段,所有这些好东西。然而,当我运行它时,我得到了这个错误。“'NoneType'对象没有属性'add'” 这是我的基本代码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
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
之间。