GUI component interaction: Difference between revisions

Content added Content deleted
(Nimrod -> Nim)
(Added Python/Tkinter example)
Line 1,756: Line 1,756:
CloseWindow(0)
CloseWindow(0)
EndIf</lang>
EndIf</lang>

=={{header|Python}}==
{{libheader|Tkinter}}
<lang python>import random
from Tkinter import *
import tkMessageBox


class Application(Frame):
def __init__(self, master):
Frame.__init__(self, master)
self.counter = 0
self.contents = StringVar()
self.contents.set(str(self.counter))
self.pack(expand=True, fill='both', padx=10, pady=15)
self.create_widgets()

def increment(self, *args):
self.counter += 1
self.update_entry()

def random(self):
if tkMessageBox.askyesno("Confirmation", "Reset to random value ?"):
self.counter = random.randint(0, 5000)
self.update_entry()

def entry_updated(self, event, *args):
if not event.char:
return 'break'
if not event.char.isdigit():
tkMessageBox.showerror('Error', 'Invalid input !')
return 'break'
self.counter = int('%s%s' % (self.contents.get(), event.char))

def update_entry(self):
self.contents.set(str(self.counter))
self.entry['textvariable'] = self.contents

def create_widgets(self):
options = {'expand': True, 'fill': 'x', 'side': 'left', 'padx': 5}
self.entry = Entry(self)
self.entry.bind('<Key>', self.entry_updated)
self.entry.pack(**options)
self.update_entry()
self.increment_button = Button(self, text='Increment', command=self.increment)
self.increment_button.pack(**options)
self.random_button = Button(self, text='Random', command=self.random)
self.random_button.pack(**options)


if __name__ == '__main__':
root = Tk()
try:
app = Application(master=root)
app.master.title("Rosetta code")
app.mainloop()
except KeyboardInterrupt:
root.destroy()</lang>

[[File:GuiInterationPython.png]]


=={{header|R}}==
=={{header|R}}==