Python Forum
Whys is asterisk and random variable necessary in these functions?
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Whys is asterisk and random variable necessary in these functions?
#4
You should read the documentation. This describes what arguments are passed to the bound event callback.

https://docs.python.org/3/library/tkinte...d-events-1

In your example you are binding a key code (<Return>, <Escape>), so the argument passed to your functions is an event that contains the key that was pressed.

This is a little program that displays the event in an Entry widget. You can select the entry and type and it works like normal, but it you press <Return> or <Escape> an text is replaced by the event info.
import tkinter as tk

class MainWindow(tk.Tk):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.title("Test UI")
        self.bind("<Return>", self.keypress)
        self.bind("<Escape>", self.keypress)
        self.text = tk.StringVar(self, "")
        tk.Entry(self, textvariable=self.text, width=80).pack(padx=20, pady=20)

    def keypress(self, event):
        self.text.set(str(event))


MainWindow().mainloop()
If you don't use the event you can ignore it. The linter in my IDE does not like functions arguments that aren't used in the function, so I use a place holder instead of an argument.
   def keypress(self, _):
        self.text.set("something happened")
The "_" in the function declaration tells the reader that one argument is passed, but not used by the function. Unfortunately you can only use one "_". If there are multiple arguments to ignore I might do this:
def keypress(self, *_):
But I cannot do this:
def keypress(self, *_, **_):
I can also use a lambda expressing to remove or replace the event argument.
self.bind("<Return>", lambda event:self.keypress("Return was pressed")
self.bind("<Escape>", lambda event:self.keypress("Escape was pressed")

    def keypress(self, msg):
        self.text.set(msg)
Here the lambda expression consumes the "event" argument and passes along a different argument.
Reply


Messages In This Thread
RE: Whys is asterisk and random variable necessary in these functions? - by deanhystad - Aug-04-2022, 07:10 PM

Possibly Related Threads…
Thread Author Replies Views Last Post
  Calling functions by making part of their name with variable crouzilles 4 1,011 Nov-02-2023, 12:25 PM
Last Post: noisefloor
  trying to input a variable using random.choice python63 9 3,866 Aug-13-2020, 05:37 PM
Last Post: python63
  Help removing asterisk item in a nested list. bmcguire 3 2,730 Apr-06-2020, 02:35 PM
Last Post: snippsat
  append one random intergar variable Coastal 5 2,847 Dec-18-2019, 09:18 PM
Last Post: ichabod801
  random variable function? Novice_fanatic 4 2,887 Oct-08-2019, 01:22 PM
Last Post: jefsummers
  Guidance in Creating random output for a variable. Livne_ye 1 2,603 May-04-2019, 01:18 PM
Last Post: Yoriz
  How do you make functions that take a variable that is not defined? magic 6 4,645 Sep-24-2018, 01:30 PM
Last Post: gruntfutuk
  multiprocess passing multiple arguments double asterisk pic8690 1 5,404 Oct-23-2016, 08:51 AM
Last Post: Skaperen

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020