Pygame_widgets 按钮不执行功能
Pygame_widgets button does not execute functions
我正在尝试在 python 中创建一个按钮,我尝试使用 Pygame_widgets 库,但我的函数不会执行
import basic
import pygame as pg
import pygame_widgets as pw
from pygame_widgets.button import Button
def startWindow():
pg.init()
win = pg.display.set_mode((600, 600))
button = Button(
win, 100, 100, 300, 150, text='Hello',
fontSize=50, margin=20,
inactiveColour=(255, 0, 0),
pressedColour=(0, 255, 0), radius=20,
onClick=lambda: basicKit = True
)
run = True
while run:
events = pg.event.get()
for event in events:
if event.type == pg.QUIT:
pg.quit()
run = False
quit()
win.fill((255, 255, 255))
button.listen(events)
button.draw()
pg.display.update()
if __name__ == '__main__':
stop = False
print("* Welcome To \"Drum Easy\" V 1.0 *")
startWindow()
while stop == False:
kit = input("\nWhat Kit? \n\nBasic\n ^\n 1\n\n>")
if kit == "1":
basic.Kit()
stop = True
else: print('Invalid Kit')
现在看到代码的 button = Button
部分有多个选项可以 运行 起作用,但其中 none 似乎有效,它们似乎都具有无效语法
A lambda 必须有一个表达式,而不是语句(赋值,if,
尽管, ...)。所以 add = lambda x: x + 1
是一个有效的 lambda。但
lambda: basicKit = True
在语法上不正确。你可以改为
定义一个函数来更新你的变量并给出这个
Button
构造函数的函数。
类似的东西:
def update_basic_kit():
global basicKit
basicKit = True
button = Button(
win, 100, 100, 300, 150, text='Hello',
fontSize=50, margin=20,
inactiveColour=(255, 0, 0),
pressedColour=(0, 255, 0), radius=20,
onClick=update_basic_kit
)
我正在尝试在 python 中创建一个按钮,我尝试使用 Pygame_widgets 库,但我的函数不会执行
import basic
import pygame as pg
import pygame_widgets as pw
from pygame_widgets.button import Button
def startWindow():
pg.init()
win = pg.display.set_mode((600, 600))
button = Button(
win, 100, 100, 300, 150, text='Hello',
fontSize=50, margin=20,
inactiveColour=(255, 0, 0),
pressedColour=(0, 255, 0), radius=20,
onClick=lambda: basicKit = True
)
run = True
while run:
events = pg.event.get()
for event in events:
if event.type == pg.QUIT:
pg.quit()
run = False
quit()
win.fill((255, 255, 255))
button.listen(events)
button.draw()
pg.display.update()
if __name__ == '__main__':
stop = False
print("* Welcome To \"Drum Easy\" V 1.0 *")
startWindow()
while stop == False:
kit = input("\nWhat Kit? \n\nBasic\n ^\n 1\n\n>")
if kit == "1":
basic.Kit()
stop = True
else: print('Invalid Kit')
现在看到代码的 button = Button
部分有多个选项可以 运行 起作用,但其中 none 似乎有效,它们似乎都具有无效语法
A lambda 必须有一个表达式,而不是语句(赋值,if,
尽管, ...)。所以 add = lambda x: x + 1
是一个有效的 lambda。但
lambda: basicKit = True
在语法上不正确。你可以改为
定义一个函数来更新你的变量并给出这个
Button
构造函数的函数。
类似的东西:
def update_basic_kit():
global basicKit
basicKit = True
button = Button(
win, 100, 100, 300, 150, text='Hello',
fontSize=50, margin=20,
inactiveColour=(255, 0, 0),
pressedColour=(0, 255, 0), radius=20,
onClick=update_basic_kit
)