[英]Getting the setter function of a Python property
我正在使用帶有onchange
參數的 GUI 模塊。
目前我有一個包含屬性的Settings
對象,我想將它們綁定到我的 GUI。
但是我的 GUI 只接受setter 函數,而不接受variables ,所以我需要獲取我的屬性的 setter 函數。
這是Settings
代碼:
class Settings:
def __init__(self):
self._name = "Jhon Doe"
@property
def name(self):
return self._name
@name.setter
def name(self, value):
if value.count(" ") > 1:
self._name = value
這是(簡化的)GUI代碼:
import pygame
import pygame_menu
from settings import Settings
settings = Settings()
pygame.init()
surface = pygame.display.set_mode((600, 600))
menu = pygame_menu.Menu('My menu', 600, 600)
menu.add.text_input('Name :', default='John Doe', onchange=settings.name)
menu.add.button('Quit', pygame_menu.events.EXIT)
menu.mainloop(surface)
你不需要實際的函數,它被寫成一個方法,所以它需要實例。 只要做你在這種情況下會做的事情,不管有沒有property
:
def _callback(value):
settings.name = value
menu.add.text_input('Name :', default='John Doe', onchange=_callback)
或者,或者,
menu.add.text_input('Name :', default='John Doe', onchange=lambda value: setattr(settings, "name", value))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.