在PyGTK运行于Windows的情况下,我希望在父窗口附近弹出一个新窗口,但永远不要离开屏幕。在
我在Windows7和WindowsXP中都观察到了我想要的微软写字板行为。如果您使窗口非常小并将其移动到桌面的右下角,右键单击文本字段,然后打开段落菜单,对话框将弹出,完全可见。即使“写字板”窗口部分不在屏幕上,也会发生这种情况。子对话框不会在相对于主窗口的固定位置弹出。它只是突然出现,完全可见。在
我的应用程序由一个主屏幕组成,这个主屏幕会生成子窗口,这些子窗口将阻止应用程序的其余部分,直到用户使用完它们为止。用户可能需要依次打开和关闭许多子窗口,因此我希望它们出现在单击按钮的位置附近,这样用户就不必在屏幕上到处移动鼠标。在
我试着用gtk.WIN_POS_鼠标,但当主菜单靠近屏幕边缘时,生成的子窗口通常会部分离开屏幕。在
我希望在子窗口上调用set_transient_for(main_menu)会通知Windows我希望我的窗口靠近其父窗口。然而,Windows只是把它放在桌面的左上角——甚至不一定和主菜单在同一个屏幕上。在
下面的代码将通过在屏幕左下角弹出一个窗口来演示该问题,该窗口包含一个按钮,该按钮在单击时生成一个子窗口:
import gtk
class MyWindow(gtk.Window):
def __init__(self):
gtk.Window.__init__(self)
self.connect("delete-event",self.on_delete_event)
button = gtk.Button("Open Subwindow")
button.connect("clicked",self.open_sub_window)
self.add(button)
self.set_gravity(gtk.gdk.GRAVITY_SOUTH_EAST)
self.show_all()
width, height = self.get_size()
self.move(gtk.gdk.screen_width() - width, gtk.gdk.screen_height() - height)
def on_delete_event(self, widget=None, data=None):
gtk.main_quit()
def open_sub_window(self, widget=None, data=None):
w = gtk.Window()
w.set_size_request(200,200)
w.set_transient_for(self)
w.set_position(gtk.WIN_POS_CENTER_ON_PARENT)
w.show()
if __name__=="__main__":
MyWindow()
gtk.main()
如您所见,子窗口部分显示在屏幕外。 如果你把这行注释掉(gtk.WIN_POS_中心_ON_家长)您将看到Windows窗口管理器只是将子窗口放在桌面的左上角。不是很有用!在
有没有一种方法可以在不借助于手动管理窗口定位的情况下,通过检查窗口结束在什么位置,然后将窗口移动到完全不在屏幕上的位置,从而获得所需的行为?在
更新: 我在2011年2月23日为pyGTK提交了一个bug报告:http://bugzilla.gnome.org/show_bug.cgi?id=643138
开发人员或其他用户尚未对此做出任何回应。如果你有这个问题,请插嘴的错误,使它得到修复(或这样我们可能会得到一个解决办法)。在
在我的Windows7系统中,弹出窗口出现在主窗口的中央。我有一个问题:你为什么用窗口而不是对话?在
相关问题 更多 >
编程相关推荐