Python 完全禁用GTK webkit webview上的滚动条?
我想要一个基于webkit的简单webview,具有固定大小(例如200x200)且没有任何滚动条。我使用没有窗口管理器的X 我尝试了以下Python代码:Python 完全禁用GTK webkit webview上的滚动条?,python,webkit,gtk,pygtk,webkitgtk,Python,Webkit,Gtk,Pygtk,Webkitgtk,我想要一个基于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
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"
即使这样,它仍然会在滚动条所在的窗口两侧显示细白线
有什么想法吗?好的,事情是这样的。您不需要滚动条,但可以构造一个Gtk.scrolled窗口作为WebKit.WebView的容器。如果你不想要一个滚动条,只需要把它放在一个没有实现Gtk.Scrollable的容器中,比如说Gtk.Grid。它根本不会显示滚动条。有几个缺点:
我试着和信号处理器一起玩,但没用 浏览GTK文档时,我看到了ScrolledWindow的两个样式属性,这两个属性在以前的样式中没有包括(
scrollbar spacing
和scrollbar Inframe
)。因此,最终代码(不写~/.gtkrc-2.0
)现在是:
虽然不是很优雅,但这对我来说很有用,因为我不关心整个X会话中的滚动条
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)
滚动条是否来自WebView,而不是滚动窗口?看一看这张照片。尽管如此,defaultWebKit确实指出这是
False
,它允许显示的页面覆盖您在滚动窗口上设置的滚动条策略。这是讨论过的-一开始并不直观,但他们对此进行了解释。@ptomato尝试添加以下内容,但没有按照广告中的方式工作:def sig_handler(*args):return True frame=view.get_main_frame()handler_id=frame.connect('scrollbars-policy-changed',sig_handler)
很高兴知道这是webkit行为,而不是通用的gtk.1。这正是我所需要的,以切断不适合webview的内容,2。视图必须保持在固定的几何图形3上。如果启用了滚动条,则不会调整窗口的大小,因此对于meWelcome to so!来说,初始默认大小似乎正常!。想解释一下吗?
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)