我在用于机器用户界面的触摸屏计算机上使用 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_all
,gobject.idle_add
但这没有帮助。
请注意,我使用的是 xfce 桌面。程序在 Gnome 上运行时不会出现此问题。