J'utilise python et il y a un problème bizarre:problème étrange dans la variable python 2.7 sur linux (pygame/oreiller)
pygame.init()
f = 1
def setf(widget, buttonToggled):
f = int(buttonToggled)
def getf():
if f == 1: return ImageFilter.BLUR
if f == 2: return ImageFilter.CONTOUR
if f == 3: return ImageFilter.DETAIL
if f == 4: return ImageFilter.EDGE_ENHANCE
if f == 5: return ImageFilter.EMBOSS
if f == 6: return ImageFilter.SMOOTH
if f == 7: return ImageFilter.SHARPEN
def doFilter(widget, buttonToggled):
global ip
if winBook.get_current_page() == 2 and f == 1:
ip = pygame.image.fromstring(Image.fromstring("RGBA",(320,294),pygame.image.tostring(ip, "RGBA")).filter(getf()).convert("RGBA").tostring("raw", "RGBA"), (320,294), "RGBA")
upd()
applyButton.connect("clicked", doFilter, f)
filterBlur.connect("toggled", setf, 1)
filterContour.connect("toggled", setf, 2)
filterDetail.connect("toggled", setf, 3)
filterEE.connect("toggled", setf, 4)
filterEmboss.connect("toggled", setf, 5)
filterSmooth.connect("toggled", setf, 6)
filterSharpen.connect("toggled", setf, 7)
Bien sûr, je l'ai évidemment créé les objets d'un gtk.Builder, d'un fichier de glade. J'ai aussi une image de pygame appelée "ip" et une fenêtre de pygame.
Mon problème est quand je bascule un autre bouton que le filterBlur (qui est un bouton radio), pour une raison quelconque, getf renvoie toujours ImageFilter.BLUR. J'ai précédemment mis print f dans setf et getf et les deux retournent la valeur correcte. Je suis trop noob pour faire du débogage avec le threading (avoir un thread rapport constamment f tandis qu'un autre exécute le programme). Que se passe-t-il? Est-ce que f revient à 1, ou est-ce que c'est à l'intérieur de getf?