Python - if/else statements
Bengt Richter
bokr at oz.net
Fri Jul 11 16:33:19 EDT 2003
On Sat, 12 Jul 2003 07:34:18 +1200, dmbkiwi <dmbkiwi at yahoo.com> wrote:
>I am new to this group, and relatively new to python programming, however,
>have encountered a problem I just cannot solve through reading the
>documentation, and searching this group on google.
>
>I have written a theme in python for the superkaramba theme engine on kde
>(see http://netdragon.sourceforge.net - if you are a kde/linux user, it is
>a great visual applet engine). I have uploaded it to www.kdelook.org for
>others to download and use, however, some users are having an issue, which
>to me seems to be very strange.
>
>Basically the problem is that their version of python is ignoring an
>if/else statement, and I can't understand why. Over 3000 people have
>downloaded the theme, and only 3 people have identified this problem. The
>relevant portion of code is:
>
>def meterClicked(widget, meter, button):
> #print "meterclick"
> global dayshow, daypicrem, ddon, ddcon, buttonpressed
# these globals -- where do they come from? What module?
# Note that each module has its own globals, so is are there different modules
# that think they're sharing globals but really aren't? There are ways to solve that,
# but first, is that relevant?
# Second, are the globals accessible from multiple threads? Are you seeing hard-stuck
errors or blue-moon errors?
> if (meter == mainpic) and (button == 1):
# always here?
> if ddcon == 0:
# and here ?
> if ddon == 1:
# and here?
> deleteDayDetail(widget, dayshow)
> karamba.redrawWidget(widget)
> createCurrentDetail(widget)
> karamba.redrawWidget(widget)
> else:
# never here, you're saying, right?
# <snip>
> else:
# never here either, right?
# <snip>
# get here though?
> buttonpressed = 1
>
I used tabs above to line up (maybe ;-) with your text, but maybe you should
run your code through tabnanny or something to check for consistent usage.
I never use tabs (though I use the tab key and gvim puts in 4 space indentation for me ;-)
so I haven't used the tab checkers, but you might benefit, perhaps.
>What these users are experiencing is that this portion of code is being
>processed, and evaluating all if statements as true, however, as you can
>see, they cannot all be true each time this function is called. Their
>versions of python also ignore the else construct.
>
>Can anyone shed any light on what might be going on with these users?
>
I'd check on the globals and threading issues first. Then see about building
a mousetrap.
Regards,
Bengt Richter
More information about the Python-list
mailing list