1

我在用于机器用户界面的触摸屏计算机上使用 pygtk 作为 gui。用户可以随时保存机器的实际配置。当他按下“保存配置”按钮时,我实现的虚拟键盘出现在屏幕上,使他能够介绍配置名称。我的问题是这个键盘在按下按钮“保存配置”后没有直接出现。人们应该等待屏幕上任意位置的下一次点击以使其出现。

这是类keyboard

class keyboard():

def __init__(self):     

    window = gtk.Window(gtk.WINDOW_TOPLEVEL) 
    window.set_position(1)
    window.set_keep_above(True)
    window.connect("destroy", lambda w: window.destroy())
    window.set_transient_for(self.gui.window) #self.gui.window is the main window
    window.set_destroy_with_parent(True)
    window.set_skip_taskbar_hint(True)
    window.set_skip_pager_hint(True)
    window.connect("delete_event",window.hide_on_delete)
    window.deiconify()
    window.set_type_hint(gtk.gdk.WINDOW_TYPE_HINT_SPLASHSCREEN)
    window.set_size_request(KBD_WIN_WIDTH,KBD_WIN_HEIGHT)
    window.set_resizable(False)

    table = gtk.Table(rows=5, columns=12, homogeneous=True)
    frame = gtk.Frame()
    frame.add(table)
    window.add(frame)
    """
    ... code to fill the table with buttons
    """
    self.window = window

这是单击“保存配置”按钮后调用的回调函数:

def save_cfg_clicked(self,widget):
    keyboard_ = keyboard(self)
    keyboard_.window.set_keep_above(True)
    keyboard_.window.set_modal(True)
    keyboard_.window.show_all()

我已经尝试了几件事,比如用 调用函数window.show_allgobject.idle_add但这没有帮助。

请注意,我使用的是 xfce 桌面。程序在 Gnome 上运行时不会出现此问题。

4

1 回答 1

1

删除线时:

window.set_transient_for(self.gui.window)

问题消失了。

于 2013-09-25T13:50:21.450 回答