我想显示和隐藏一些窗口并记录他们的名字。
但是我无法做到,所以我打印了一些有趣的事实:
print Gtk.Buildable.get_name(menuitem)
print menuitem.get_toplevel()
print Gtk.Buildable.get_name(menuitem.get_toplevel())
--- OUTPUT -----------------------------------------------
Configurazione2_Menuitem
<Window object at 0x7f81880e7280 (GtkWindow at 0x15b9a40)>
None
所以我无法隐藏当前窗口。因为这个不能工作:
menuitem.get_toplevel().hide() #hide_currentwindow
答案 0 :(得分:-1)
name,hide和show属性链接到gtk.widget
>>> import gtk
>>> w = gtk.Window()
>>> w.get_name()
'GtkWindow'
>>> w.set_name("test")
>>> w.get_name()
'test'
>>>
>>> w.show()
>>> w.hide()
>>>
答案 1 :(得分:-1)
它对我有用。
下面的代码打开一个带有MenuItem和Button的窗口,按下该按钮隐藏窗口,方法是通过调用MenuItem.get_toplevel().hide()
来获取对它的引用
现在,这回答了帖子中提到的问题,但不是标题中的问题。您没有说明为什么要获取窗口小部件的名称,只是在您有一个子菜单项的引用时要隐藏窗口。
import gtk
import time
class MyWindow():
def __init__(self):
win = gtk.Window()
win.connect('destroy',gtk.main_quit)
self.menu = gtk.MenuItem('MenuItem')
hbox = gtk.HBox()
hbox.pack_start(self.menu)
btn = gtk.Button('HideMe')
btn.connect('pressed',self.hide_me)
hbox.pack_start(btn)
win.add(hbox)
win.show_all()
def hide_me(self, widget):
self.menu.get_toplevel().hide()
print 'Hiding'
time.sleep(2)
print 'Showing'
self.menu.get_toplevel().show()
MyWindow()
gtk.main()
编辑: 更简单的版本:
import gtk
import time
class MyWindow():
def __init__(self):
win = gtk.Window()
win.connect('destroy',gtk.main_quit)
win.set_size_request(50,50)
menuitem = gtk.MenuItem()
menuitem.set_label("I'm a Menuitem")
win.add(menuitem)
win.show_all()
print 'Hiding window now...'
menuitem.get_toplevel().hide()
print 'Showing window now...'
time.sleep(2)
menuitem.get_toplevel().show()
MyWindow()
gtk.main()