First, welcome to the forums!
Next, it’s really helpful to use code formatting when posting code. You can either type:
[lua] paste your code here [/lua]
or simply click the blue <> button in the editting tools bar with Bold, Italic, etc. and paste your code into the window that pops up. Now on to your problem:
local myButton = widget.newButton ( --\<-------------- left = 150, top = 200, width = 350, height = 150, defaultFile = "startbutton1.png", overFile = "startbutton.png", label = "Start", onEvent = handleButtonEvent, } --\<-------------
Notice the two lines I put arrows on. widget.newButton is expecting a table to be passed which means you need to inclose all of the constructor parts inside curly braces {}. The first one isn a parenthesis, not a curly brace.
Most functions you write expect to have parenthesis around all parameters like every other programming language. However, if the function only takes a single table, Lua lets you leave off the parens in that case. Thus either:
local button = widget.newButton({ button code })
or
local button = widget.newButton { button code }
are legal. So why do the first one? It’s extra typing… Yes, it is, but it also is syntactically consistent with other functions that require multiple parameters or non-table parameters. For me it’s a personal preference to include the parens. The Lua language doesn’t care.
Rob