On 25/06/2019 14:50, stephen.m.sm...@comcast.net wrote: > using global, but that fails. I also can't seem to use arguments because the > module that tkinter fires up with this command: > > self.process_button = tk.Button(master, text='Process Request', \ > font = ('times', regular_font, > 'bold'),\ > fg = "blue", > command=self.Process_Reservation_Request) > > does not seem to support the presence of arguments.
There is a common trick to get round that: self.process_button = tk.Button(master, text='Process Request', font = ('times', regular_font,'bold'), fg = "blue", command=lambda :self.Process_Reservation_Request(x,y) ) The lambda defines a function that takes no arguments but which then calls your function with arguments. Of course x and y need to be visible within the function defining the lambda. > Demo Program - This currently bombs in part 3 - it can't seem to see the > value/space created in part1. Any help or reference that will clearly show > Part 1 > > import nice > import nice2 > global myGlobal > myGlobal = "initial value" global here does nothing. global is only useful inside a function. Remember that global in Python means module level - it does not mean visible between modules! > print(myGlobal) > nice.changeGlobal() > print (nice.myGlobal) > nice2.changeGlobal() > > print("nice version = ", nice.myGlobal) > print("nice2 version = ", nice2.myGlobal) > print("mainline=", myGlobal) > > part 2 - stored as nice.py > > def changeGlobal(): > global myGlobal This tells changeGlobal() that there is a variable called myGlobal defined at the module level. That is, within nice. It does not refer to the one you defined in Part 1. > #print("entering changeGlobal part 1", myGlobal) > myGlobal = "hello" This now creates that module level variable with the value 'hello'. > print("top of myGlobal", myGlobal) > > myGlobal="bye" And this redefines nice.myGlobal to be 'bye' The final value will now be seen by Part 1 code as nice.myGlobal with a value of 'bye'. > Part3 stored as nice2 > myGlobal = "hello" This creates a new global variable called myGlobal within the nice2 module. It is visible to Part 1 as nice2.myGlobal > def changeGlobal(): > global myGlobal This tells changeGlobal() to use the module level variable above. ie nice2.myGlobal. > print("first value = ", nice.myGlobal) You didn't import nice into nice2 so this should give an error. > myGlobal="it worked" > print("in changeGlobal2 =", myGlobal) This should set the variable nice2.myGlobal to 'it worked' and that will be seen in Part 1 code as nice2.myGlobal. -- Alan G Author of the Learn to Program web site http://www.alan-g.me.uk/ http://www.amazon.com/author/alan_gauld Follow my photo-blog on Flickr at: http://www.flickr.com/photos/alangauldphotos _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: https://mail.python.org/mailman/listinfo/tutor