我怎么能在gtk.Layout中有一个滚动条。
例如,在我的代码中我有:
import pygtk
pygtk.require('2.0')
import gtk
class ScrolledWindowExample:
def __init__(self):
self.window = gtk.Dialog()
self.window.connect("destroy", self.destroy)
self.window.set_size_request(300, 300)
self.scrolled_window = gtk.ScrolledWindow()
self.scrolled_window.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
self.window.vbox.pack_start(self.scrolled_window, True, True, 0)
self.layout = gtk.Layout()
self.scrolled_window.add(self.layout)
self.current_pos = 0
self.add_buttom()
self.window.show_all()
def add_buttom(self, widget = None):
title = str(self.current_pos)
button = gtk.ToggleButton(title)
button.connect_object("clicked", self.add_buttom, None)
self.layout.put(button, self.current_pos, self.current_pos)
button.show()
self.current_pos += 20
def destroy(self, widget):
gtk.main_quit()
if __name__ == "__main__":
ScrolledWindowExample()
gtk.main()
我真正想要的是找到一些方法来使滚动动态。请参阅上面的示例,当您单击任何按钮时,将添加另一个按钮。但滚动条不起作用。
如何让滚动条工作?
答案 0 :(得分:0)
如果您使用gtk.Window()
代替gtk.Dialog()
,它是否有效;或self.window.run()
之后执行self.window.show_all()
?
Dialog和Common Window之间的区别在于Dialog有自己的循环来处理事件。由于您没有运行其run()
命令,因此此循环永远不会有机会捕获事件,因此ScrolledWindow
不接收它们,并且不会更改其大小。