如何解决如何改变 GTK 窗口的位置
我试图在 Ubuntu 20.04 中将 html 文件显示为桌面小部件,I got the working code from NOrbert answer 但问题是它是左对齐的(见附图)
工作python代码
import gi
gi.require_version('Gtk','3.0')
gi.require_version('webkit2','4.0')
from gi.repository import webkit2,Gtk,Gdk,Gio,GLib
import signal,os
document="file:///home/sai/Downloads/Compressed/JS-Calendar-master/calendar.html"
class MainWin(Gtk.Window):
def __init__(self):
Gtk.Window.__init__(self,skip_pager_hint=True,skip_taskbar_hint=True)
self.set_wmclass("sildesktopwidget","sildesktopwidget")
self.set_type_hint(Gdk.WindowTypeHint.DOCK)
self.set_size_request(500,400)
self.set_keep_below(True)
#Set transparency
screen = self.get_screen()
rgba = screen.get_rgba_visual()
self.set_visual(rgba)
self.override_background_color(Gtk.StateFlags.norMAL,Gdk.RGBA(0,0))
#Add all the parts
self.view = webkit2.WebView()
#self.view.set_transparent(True)
self.view.override_background_color(Gtk.StateFlags.norMAL,0))
#self.view.props.settings.props.enable_default_context_menu = False
# configure transparency as in https://github.com/LTSchmiddy/dungeon-commander/blob/8d5c58ca321a05519c8cb1c5afdebba4954cbfca/src/webview/platforms/gtk.py#L132
configure_transparency(self)
configure_transparency(self.view)
wvbg = self.view.get_background_color()
wvbg.alpha = 0.0
self.view.set_background_color(wvbg)
self.view.load_uri("file://"+document)
Box = Gtk.Box()
self.add(Box)
Box.pack_start(self.view,True,0)
self.set_decorated(False)
self.connect("destroy",lambda q: Gtk.main_quit())
#Show all the parts
self.show_all()
self.move(100,100)
def refresh_file(*args):
print args
mainwin.view.reload()
def file_changed(monitor,file,unkNown,event):
# reload
GLib.timeout_add_seconds(2,refresh_file)
# configure transparency as in https://github.com/LTSchmiddy/dungeon-commander/blob/8d5c58ca321a05519c8cb1c5afdebba4954cbfca/src/webview/platforms/gtk.py#L549
def configure_transparency(c):
c.set_visual(c.get_screen().get_rgba_visual())
c.override_background_color(Gtk.StateFlags.ACTIVE,0))
c.override_background_color(Gtk.StateFlags.BACKDROP,0))
c.override_background_color(Gtk.StateFlags.DIR_LTR,0))
c.override_background_color(Gtk.StateFlags.DIR_RTL,0))
c.override_background_color(Gtk.StateFlags.FOCUSED,0))
c.override_background_color(Gtk.StateFlags.INCONSISTENT,0))
c.override_background_color(Gtk.StateFlags.INSENSITIVE,0))
c.override_background_color(Gtk.StateFlags.norMAL,0))
c.override_background_color(Gtk.StateFlags.PRELIGHT,0))
c.override_background_color(Gtk.StateFlags.SELECTED,0))
transparentwindowStyleProvider = Gtk.Cssprovider()
transparentwindowStyleProvider.load_from_data(b"""
GtkWindow {
background-color:rgba(0,0);
background-image:none;
}""")
c.get_style_context().add_provider(transparentwindowStyleProvider,Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION)
if __name__ == '__main__':
gio_file = Gio.File.new_for_path(document)
monitor = gio_file.monitor_file(Gio.FileMonitorFlags.NONE,None)
monitor.connect("changed",file_changed)
mainwin = MainWin()
signal.signal(signal.SIGINT,signal.SIG_DFL) # make ^c work
Gtk.main()
尝试过的解决方案
self.set_position(Gtk.WindowPosition.CENTER)
or
self.set_position(Gtk.WindowPosition.MOUSE)
above solutions is working in this example but not in my code
请帮我更改类似于 self.set_position(x,y) 的位置,这对我更改 x 和 y 值非常方便。
解决方法
在上面的代码中#Show all the part
#Show all the parts
self.show_all()
self.move(100,100) ------> by changing this we can change the position
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。