Edge Rewrite
// HTMLRewriter · presentation

This page was redesigned at the edge.

Cloudflare fetched the original article and streamed it through HTMLRewriter to apply an entirely new visual system without rebuilding the source page.

Jump to content

Talk:Tkinter

Page contents not supported in other languages.
Add topic
From Wikipedia, the free encyclopedia
Latest comment: 5 months ago by JimJJewett in topic root=none?
  1. Python program to create a simple GUI
  2. calculator using Tkinter
  1. import everything from tkinter module

from tkinter import *

  1. globally declare the expression variable

expression = ""


  1. Function to update expression
  2. in the text entry box

def press(num):

   # point out the global expression variable
   global expression

   # concatenation of string
   expression = expression + str(num)

   # update the expression by using set method
   equation.set(expression)


  1. Function to evaluate the final expression

def equalpress():

   # Try and except statement is used
   # for handling the errors like zero
   # division error etc.

   # Put that code inside the try block
   # which may generate the error
   try:

       global expression

       # eval function evaluate the expression
       # and str function convert the result
       # into string
       total = str(eval(expression))

       equation.set(total)

       # initialize the expression variable
       # by empty string
       expression = ""

   # if error is generate then handle
   # by the except block
   except:

       equation.set(" error ")
       expression = ""


  1. Function to clear the contents
  2. of text entry box

def clear():

   global expression
   expression = ""
   equation.set("")


  1. Driver code

if __name__ == "__main__":

   # create a GUI window
   gui = Tk()

   # set the background colour of GUI window
   gui.configure(background="light green")

   # set the title of GUI window
   gui.title("Simple Calculator")

   # set the configuration of GUI window
   gui.geometry("270x150")

   # StringVar() is the variable class
   # we create an instance of this class
   equation = StringVar()

   # create the text entry box for
   # showing the expression .
   expression_field = Entry(gui, textvariable=equation)

   # grid method is used for placing
   # the widgets at respective positions
   # in table like structure .
   expression_field.grid(columnspan=4, ipadx=70)

   # create a Buttons and place at a particular
   # location inside the root window .
   # when user press the button, the command or
   # function affiliated to that button is executed .
   button1 = Button(gui, text=' 1 ', fg='black', bg='red',
                   command=lambda: press(1), height=1, width=7)
   button1.grid(row=2, column=0)

   button2 = Button(gui, text=' 2 ', fg='black', bg='red',
                   command=lambda: press(2), height=1, width=7)
   button2.grid(row=2, column=1)

   button3 = Button(gui, text=' 3 ', fg='black', bg='red',
                   command=lambda: press(3), height=1, width=7)
   button3.grid(row=2, column=2)

   button4 = Button(gui, text=' 4 ', fg='black', bg='red',
                   command=lambda: press(4), height=1, width=7)
   button4.grid(row=3, column=0)

   button5 = Button(gui, text=' 5 ', fg='black', bg='red',
                   command=lambda: press(5), height=1, width=7)
   button5.grid(row=3, column=1)

   button6 = Button(gui, text=' 6 ', fg='black', bg='red',
                   command=lambda: press(6), height=1, width=7)
   button6.grid(row=3, column=2)

   button7 = Button(gui, text=' 7 ', fg='black', bg='red',
                   command=lambda: press(7), height=1, width=7)
   button7.grid(row=4, column=0)

   button8 = Button(gui, text=' 8 ', fg='black', bg='red',
                   command=lambda: press(8), height=1, width=7)
   button8.grid(row=4, column=1)

   button9 = Button(gui, text=' 9 ', fg='black', bg='red',
                   command=lambda: press(9), height=1, width=7)
   button9.grid(row=4, column=2)

   button0 = Button(gui, text=' 0 ', fg='black', bg='red',
                   command=lambda: press(0), height=1, width=7)
   button0.grid(row=5, column=0)

   plus = Button(gui, text=' + ', fg='black', bg='red',
               command=lambda: press("+"), height=1, width=7)
   plus.grid(row=2, column=3)

   minus = Button(gui, text=' - ', fg='black', bg='red',
               command=lambda: press("-"), height=1, width=7)
   minus.grid(row=3, column=3)

   multiply = Button(gui, text=' * ', fg='black', bg='red',
                   command=lambda: press("*"), height=1, width=7)
   multiply.grid(row=4, column=3)

   divide = Button(gui, text=' / ', fg='black', bg='red',
                   command=lambda: press("/"), height=1, width=7)
   divide.grid(row=5, column=3)

   equal = Button(gui, text=' = ', fg='black', bg='red',
               command=equalpress, height=1, width=7)
   equal.grid(row=5, column=2)

   clear = Button(gui, text='Clear', fg='black', bg='red',
               command=clear, height=1, width=7)
   clear.grid(row=5, column='1')

   Decimal= Button(gui, text='.', fg='black', bg='red',
                   command=lambda: press('.'), height=1, width=7)
   Decimal.grid(row=6, column=0)
   # start the GUI
   gui.mainloop()

Simpler Example

[edit]

I suggest that the example under A minimal application should be made more simpler and it should be changed to a Hello, world! example. Thoughts? --I8086 (talk) 12:49, 13 March 2015 (UTC)Reply

I agree and disagree. This should be the second example and a simple Hello, world! example with out the need for a class structure should be the first. I think there are many other issues and concepts that need to be introduced. To be of practical use we need a menubar structure, and canvas too. --ClemRutter (talk) 17:47, 16 August 2018 (UTC)Reply

Is Tkinter still the de facto Python GUI?

[edit]

In 2021, there are a lot of different libraries to write GUIs, among them GTK and Qt. Should the introductory sentence be edited? 2601:281:C500:37:5D60:623F:7A0F:F317 (talk) 00:27, 17 March 2021 (UTC)Reply

Nope. Tkinter is still one of the most relevant GUIs. Didlidoo (talk) 06:14, 4 September 2024 (UTC)Reply
And that is because Tcl/Tk is a great language for cross-platform GUI development, BUT putting Tcl/Tk on your resume is considered suicidal... So wrapping an entire Tcl language interpreter in python and translating a bunch of nonsense code into Tcl/Tk at runtime is the pathetic result. Now that Python has an event loop there is no excuse for not dropping the charade.  Preceding unsigned comment added by 2600:1700:6AE5:2510:0:0:0:40 (talk) 18:24, 5 December 2024 (UTC)Reply

root=none?

[edit]

The first example creates a root element before using it. The second example just uses root=none during initialization, and does no patching or registration when changing it to a real object. This is worth an explanation in the line-by-line notes below. JimJJewett (talk) 23:19, 27 February 2026 (UTC)Reply