On Mon, 27 Sep 2010 06:01:35 am Bill Allen wrote: > #This captures the coordinates the two mouse clicks, successfully. > mouse_pos is in the form (x,y), such as (204,102). > if mouse_pressed == (1,0,0) and first_click == False: > first_click = True > mouse_pos1 = mouse_pos > elif mouse_pressed == (1,0,0) and first_click == True: > mouse_pos2 = mouse_pos
You don't actually tell us what mouse_pressed is, I presume (1, 0, 0) has some significance. But you check its value twice: if mouse_pressed = (1, 0, 0) and something-else: ... elif mouse_pressed = (1, 0, 0) and the opposite of something-else: ... That is best written as a single test of mouse_pressed, followed by an if-else: if mouse_pressed = (1, 0, 0): if something-else: ... else: ... What should "something-else" be? Your tests are written as: first_click == False first_click == True But both of them return True or False themselves, so you might as well write: (first_click == True) == True ((first_click == True) == True) == True (((first_click == True) == True) == True) == True # Help, help, when do I stop??? Of course nobody would bother with the extra tests, because they're redundant. But even doing *one* test is likewise redundant -- the place to stop is before you even start! Since first_click is already either True or False, all you need is to look at it directly: if mouse_pressed == (1,0,0): if first_click: mouse_pos2 = mouse_pos else: first_click = True mouse_pos2 = mouse_pos I'm not entirely sure about the logic with first_click. It seems to me that once it becomes True, it will always stay True, and if it becomes False, it will immediately be set to True. But perhaps you have some other code elsewhere that handles setting it to False. > #This is the decisional logic based on the mouse click coordinates, > previously captured. > #This first case fails although the print statement give me feedback > on the coordinates, > #that suggest it should have worked. It always falls through to the > final else. > if mouse_pos[1] < height/2 and mouse_pos2[1] > height/2: [...] I'm going to suggest another approach here. Since you only care whether the clicks are in the top or bottom half of the screen, let's make that explicit: click_in_bottom_half1 = mouse_pos[1] < height/2 click_in_bottom_half2 = mouse_pos2[1] < height/2 Now your decision logic becomes simple, and obvious. It documents itself: if click_in_bottom_half1 and click_in_bottom_half2: print "Both clicks in bottom half of screen" elif click_in_bottom_half1: print "The first click was in the bottom half." print "The second click was in the top half." elif click_in_bottom_half2: print "The first click was in the top half." print "The second click was in the bottom half." else: print "Both clicks in top half of screen" -- Steven D'Aprano _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: http://mail.python.org/mailman/listinfo/tutor