我想要一个基于webkit的简单webview,具有固定大小(例如200x200)并且没有任何滚动条。我使用X而没有窗口管理器。
我尝试了以下Python代码:
import gtk
import webkit
view = webkit.WebView()
sw = gtk.ScrolledWindow()
sw.set_policy(gtk.POLICY_NEVER, gtk.POLICY_NEVER)
sw.add(view)
win = gtk.Window(gtk.WINDOW_TOPLEVEL)
win.add(sw)
win.set_default_size(200, 200)
win.show_all()
view.open("http://www.blackle.com")
gtk.main()
滚动条仍然显示,但它们不应该显示。
我还尝试使用~/.gtkrc-2.0
跟随不同路径并完全删除GTK上的滚动条:
style "custom-scrollbar-style"
{
GtkScrollbar::slider_width = 0
GtkScrollbar::min-slider-length = 0
GtkScrollbar::activate_slider = 0
GtkScrollbar::trough_border = 0
GtkScrollbar::has-forward-stepper = 0
GtkScrollbar::has-backward-stepper = 0
GtkScrollbar::stepper_size = 0
GtkScrollbar::stepper_spacing = 0
GtkScrollbar::trough-side-details = 0
GtkScrollbar::default_border = { 0, 0, 0, 0 }
GtkScrollbar::default_outside_border = { 0, 0, 0, 0 }
}
widget_class "*Scrollbar" style "custom-scrollbar-style"
即使这样,它仍然会在滚动条所在的窗口两侧显示细白线。
有什么想法吗?
答案 0 :(得分:0)
好的,这就是事情。您不想要滚动条但是您构造了一个Gtk.ScrolledWindow作为WebKit.WebView的容器。如果你不想要滚动条,只需放入一个没有实现Gtk.Scrollable的容器,比如说Gtk.Grid。它根本不会显示滚动条。几个缺点:
答案 1 :(得分:0)
我尝试使用信号处理程序,但它没有用。
通过GTK文档,我看到了ScrolledWindow的2个样式属性,我没有包含在上一个样式(scrollbar-spacing
和scrollbar-within-bevel
)中。所以最终的代码(没有写~/.gtkrc-2.0
)现在是:
import gtk
import webkit
gtk.rc_parse_string("""style "hide-scrollbar-style"
{
GtkScrollbar::slider_width = 0
GtkScrollbar::min-slider-length = 0
GtkScrollbar::activate_slider = 0
GtkScrollbar::trough_border = 0
GtkScrollbar::has-forward-stepper = 0
GtkScrollbar::has-backward-stepper = 0
GtkScrollbar::stepper_size = 0
GtkScrollbar::stepper_spacing = 0
GtkScrollbar::trough-side-details = 0
GtkScrollbar::default_border = { 0, 0, 0, 0 }
GtkScrollbar::default_outside_border = { 0, 0, 0, 0 }
GtkScrolledWindow::scrollbar-spacing = 0
GtkScrolledWindow::scrollbar-within-bevel = False
}
widget_class "*Scrollbar" style "hide-scrollbar-style"
widget_class "*ScrolledWindow" style "hide-scrollbar-style"
""")
view = webkit.WebView()
sw = gtk.ScrolledWindow()
sw.add(view)
sw.set_policy(gtk.POLICY_ALWAYS, gtk.POLICY_ALWAYS)
win = gtk.Window(gtk.WINDOW_TOPLEVEL)
win.add(sw)
win.set_default_size(200, 200)
win.show_all()
view.open("http://www.blackle.com/")
gtk.main()
虽然不优雅,但这对我有用,因为我不关心X会话中的滚动条。
答案 2 :(得分:0)
以下为我工作
class PREview(object):
def __init__(self, project_directory):
# Make the HTML viewable area
self.wv = webkit.WebView()
self.wf = self.wv.get_main_frame()
self.wf.connect("scrollbars-policy-changed", self.on_webkit_webframe_scrollbars_policy_changed)
def on_webkit_webframe_scrollbars_policy_changed(self, widget):
return True # to stop propagation
然后在主程序中......
self.out_scroll = gtk.ScrolledWindow()
self.out_scroll.set_policy(gtk.POLICY_NEVER, gtk.POLICY_NEVER)
self.PV = PREview(self)
self.out_scroll.add(self.PV.wv)