Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Variables linux上Python2.7中的奇怪变量问题(pygame/pillow)_Variables_Pygame_Python Imaging Library - Fatal编程技术网

Variables linux上Python2.7中的奇怪变量问题(pygame/pillow)

Variables linux上Python2.7中的奇怪变量问题(pygame/pillow),variables,pygame,python-imaging-library,Variables,Pygame,Python Imaging Library,我正在使用python,但有一个奇怪的问题: 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 ==

我正在使用python,但有一个奇怪的问题:

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)
当然,我显然是从一个gtk.Builder,从一个glade文件创建了这些对象。我还有一个名为“ip”的pygame图像和一个pygame窗口


我的问题是,当我切换filterBlur(单选按钮)之外的按钮时,出于某种原因,getf仍然返回ImageFilter.BLUR。我之前已经将printf放入setf和getf中,它们都返回正确的值。我太笨了,无法用线程进行调试(一个线程不断地报告f,而另一个线程运行程序)。发生了什么事?f是变回1还是在getf中?

您需要在
setf
中放入一个
global f
语句。否则,
f
setter函数只会创建一个局部变量