Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Showing and Hiding widgets

How do you show and hide widgets in Tkinter? I want to have an entry box, but not have it shown at all times. Can someone show me the functions to show and hide entry widgets and other widgets in tkinter? I want to be able to do this without having multiple frames.

like image 868
udpatil Avatar asked Apr 22 '12 11:04

udpatil


People also ask

How do you make a widget visible and invisible Flutter?

In Flutter, it tends to be done effectively utilizing Visibility a widget. The widget you need to show or hide must be the child of Visibility widget. In the constructor, pass visibility alternative whose value is a boolean and is put away as the state. Then, at that point, update the value to show or hide the child .

How do I hide a widget?

Click the Layout tab, if necessary. By default, the Layout tab is selected. In the Screen Outline panel, which provides the hierarchical representation of the screen, select the widget that you want to hide. Select the Hide check box.

What are the visibility widgets in Flutter?

Flutter Visibility Widget Visibility is a widget that is useful to show or hide other widgets in flutter. We have to wrap the widget we want to show or hide inside the visibility widget as a child. This widget has a property called visible which controls the state (visible or invisible) of the child.

How do you make a container invisible in Flutter?

You can use Opacity with an opacity: of 0.0 to draw make an element hidden but still occupy space. To make it not occupy space, replace it with an empty Container() .


2 Answers

This has been answered before on stackoverflow. The short answer is, you can use grid_remove which will cause the widget to be removed if it was previously added via grid. grid_remove remembers where the widget was, so a simple grid() will put it back without having to re-specify all of the options.

You can also use pack_forget (if using pack) and grid_forget (if using grid). These work similarly to grid_remove except they cause all of the settings to be forgotten, which means you have to explicitly place it back into the proper place on the screen.

Another option is to take advantage of the stacking order of widgets. You can use the lower method to hide the widget behind its sibling, and lift to raise it above. See this answer for an example.

like image 156
Bryan Oakley Avatar answered Oct 18 '22 20:10

Bryan Oakley


I tried the suggestions that others have posted and noticed that I was making a simple mistake. You can't call .grid() on the same line that you declare the widget that you're going to hide.

To clarify, I previously had this:

self.helpExpansion = ttk.Label(self.helpMenu, text="Expansion Widget").grid(row=1, column=3, sticky=EW)
self.helpExpansion.grid_remove()

But I got the error AttributeError: 'NoneType' object has no attribute 'grid_remove'. To fix it, I had to make the call to .grid() on a new line, like this:

self.helpExpansion = ttk.Label(self.helpMenu, text="Help Expansion")
self.helpExpansion.grid(row=1, column=3, sticky=EW)
self.helpExpansion.grid_remove()

Then to toggle between showing and hiding, I just alternated between calling self.helpExpansion.grid() (function arguments not needed) and self.helpExpansion.grid_remove().

For me it worked with both tk.Label or ttk.Label. I'm using Python 2.7.13. Hope that helps!

like image 30
Olivia Stork Avatar answered Oct 18 '22 22:10

Olivia Stork