语法错误 "输入 'self' 没有可行的替代方案
我有一个叫 gui.py 的文件,里面有以下代码:
from javax.swing import JFrame, JPanel, Box, JComboBox, JSpinner, JButton, JLabel, SpinnerNumberModel, WindowConstants
from java.awt import BoxLayout, GridLayout
class SettingsWindow:
def start( self ):
selected = self.combobox.selectedIndex
if selected >= 0:
self.map = self.map_list[ selected ]
self.games = self.spinner.getValue()
def __init__( self, map_list ):
frame = JFrame( "Settings" )
frame.setSize( 200, 250 )
frame.setLayout( BoxLayout() )
panel = JPanel( GridLayout( 3, 1 )
# Map Combobox
self.map_list = map_list
self.combobox = JComboBox( self.map_list )
map_box = Box( BoxLayout.X_AXIS )
map_box.add( JLabel( "Select map file:" ) )
map_box.add( Box.createHorizontalStrut( 15 ) )
map_box.add( self.combobox )
panel.add( map_box )
# Games Spinner
self.spinner = JSpinner( SpinnerNumberModel( 1, 1, 25, 1 ) )
games_box = Box( BoxLayout.X_AXIS )
games_box.add( JLabel( "Number of games:" ) )
map_box.add( Box.createHorizontalStrut( 15 ) )
games_box.add( self.spinner )
panel.add( games_box )
# Start Button
btn = JButton( "Start", actionPerformed = self.start )
btn_box = Box( BoxLayout.X_AXIS )
btn_box.add( btn )
panel.add( btn_box )
frame.setDefaultCloseOperation( WindowConstants.EXIT_ON_CLOSE )
frame.setVisible( True )
if __name__ == '__main__':
SettingsWindow()
然后,在我的主文件里,我用下面的代码来调用上面的类:
settings = gui.SettingsWindow( map_list )
结果我遇到了这个错误:
SyntaxError ( ("no viable alternative at input 'self'", ('.../gui.py', 19, 8, ' self.map_list = map_list\n')) )
如果有人能帮我看看我漏掉了什么,我会非常感激!
2 个回答
1
根据个人经验,这种情况也可能发生在函数调用时,使用了不匹配的引号类型(单引号和双引号混用)——也就是说,一个引号是双引号("),而另一个引号是单引号(')。
举个例子:
import subprocess
subprocess.call("hello.exe')
应该是 "hello.exe"
或者 hello.exe'
,但不能混在一起用。
33
你忘记在上一行代码的末尾加上括号了。