我在触摸屏计算机上使用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上运行时不会出现此问题。
答案 0 :(得分:1)
删除该行时:
window.set_transient_for(self.gui.window)
问题消失了。