我正在使用像这样的Webkit浏览器检查器.
当我在Ubuntu 12.10中运行它时,我在使用检查器时遇到错误.例如:
** Message: console message: file:///usr/share/webkitgtk-1.0/webinspector/UIString.js @42: Localized string "Go to line" not found.
** Message: console message: file:///usr/share/webkitgtk-1.0/webinspector/UIString.js @42: Localized string "Filter" not found.
** Message: console message: file:///usr/share/webkitgtk-1.0/webinspector/UIString.js @42: Localized string "Search Previous" not found.
** Message: console message: file:///usr/share/webkitgtk-1.0/webinspector/UIString.js @42: Localized string "Search Next" not found.
** Message: console message: file:///usr/share/webkitgtk-1.0/webinspector/UIString.js @42: Localized string "?:" not found.
** Message: console message: file:///usr/share/webkitgtk-1.0/webinspector/UIString.js @42: Localized string "%d of %d" not found.
(geany:2487): Gdk-CRITICAL **: …
Run Code Online (Sandbox Code Playgroud) 我正在尝试在Ubuntu上添加Python 3中的"最近使用的"文件列表.
我能够成功读取最近使用的文件列表,如下所示:
from gi.repository import Gtk
recent_mgr = Gtk.RecentManager.get_default()
for item in recent_mgr.get_items():
print(item.get_uri())
Run Code Online (Sandbox Code Playgroud)
这会打印出我在Nautilus中查看"Recent"时看到的相同文件列表,或者查看GIMP等应用程序文件对话框中的"最近使用"位置.
但是,当我尝试添加这样的项目时(/home/laurence/foo/bar.txt
现在的文本文件在哪里)...
recent_mgr.add_item('file:///home/laurence/foo/bar.txt')
Run Code Online (Sandbox Code Playgroud)
...文件未显示在Nautilus的最近部分或文件对话框中.它甚至没有显示在返回的结果中get_items()
.
如何从Python中将文件添加到GTK最近使用的文件列表中?
我最近将我的gVim更新为使用gtk 3编译的版本8,我发现gVim窗口周围有奇怪的内部边框:
这张照片可能不太清楚但如果仔细观察,可以在右侧和底部看到白色边框.我已经通过在gtk 2上为边框设置深色来解决了这个问题,但是在gtk3上它再次发生了.想知道在gtk 3上完全删除这个边框吗?
我正在寻找一种方法从其父级(无论可能是什么 - 一个VBox,一个网格......)中删除一个小部件,并在其位置添加一个替代小部件.
我找到了这个答案,但我似乎无法使其与Gtk3一起使用.
这是我试过的:
from gi.repository import Gtk
def replace_widget(old, new):
parent= old.get_parent()
props= {}
for key in Gtk.ContainerClass.list_child_properties(type(parent)):
props[key.name]= parent.child_get_property(old, key.name)
parent.remove(old)
parent.add_with_properties(new, **props)
Run Code Online (Sandbox Code Playgroud)
但是要求Gtk.ContainerClass.list_child_properties
加油
TypeError: argument self: Expected a Gtk.ContainerClass, but got gi.repository.Gtk.GObjectMeta
Run Code Online (Sandbox Code Playgroud)
它也不会接受容器小部件的实例.对于我的生活,我无法弄清楚我应该通过什么参数.
PS:我知道我可以在容器和子窗口小部件之间添加另一个窗口小部件,但我不想这样做.
更新:我想这还不够清楚:替代小部件应该与原始小部件位于同一个地方,具有相同的打包属性.
我希望我的GTK应用程序在系统托盘中有一个状态图标,我使用StatusIcon可以很好地工作,但是这已被弃用:
gtk_status_icon_new自版本3.14起已被弃用,不应在新编写的代码中使用.
使用通知
文档说"使用通知",但我不知道这实际意味着什么.我将此解释为"使用桌面通知",但据我所知,这是一个完全不同的目的.我想要一个始终可见的系统托盘图标,而不是临时弹出通知.尽管如此,我找不到任何其他似乎是"通知"的含义.
是否存在GtkStatusIcon的新替代品,它在系统托盘中提供了一个图标,支持接收鼠标点击/滚动信号并显示弹出菜单?
我有两个GTK窗口
正常(主)窗口运行动画,在注册的回调中绘制内容gtk_widget_add_tick_callback()
.
在某些时候,创建了运行模态循环的辅助窗口:
void show_modal()
{
GtkWindow* gw = gtkwindow(this);
if( parent() )
gtk_window_set_transient_for(gw, gtkwindow( parent() ));
gtk_widget_show(GTK_WIDGET(gw));
gtk_window_set_modal(gw,TRUE);
gtk_window_set_keep_above(gw,TRUE);
this->update_window_state(gool::WINDOW_SHOWN);
while( this->is_valid_window() )
{
if(this->_window_state == WINDOW_HIDDEN) break;
if(this->_window_state == WINDOW_STATE_NA) break;
gtk_main_iteration(); // gtk_main_iteration_do(true);
}
}
Run Code Online (Sandbox Code Playgroud)问题:主窗口中的动画工作正常,直到show_modal()
被调用.它显示为gtk_main_iteration();
按gtk_widget_add_tick_callback()
功能添加的块标记.一旦我关闭辅助窗口,所以while() {gtk_main_iteration();}
循环退出然后主窗口中的动画再次开始运行.
想知道如何在GTK中制作"动画友好"的模态循环吗?
更新:gtk_main_iteration();
除了"当前"之外,它看起来像块不仅是滴答而是任何窗口的任何更新 - 它们只是被冻结.这种GTK行为的原因是什么?
更新#2:
gtk_dialog_run();
表现完全一样gtk_main_iteration();
- 锁定活动窗口以外的任何窗口上的任何更新.
当我尝试从中导入Webkit
时gi.repository
,它给出了ImportError
:
from gi.repository import Webkit
ERROR:root:Could not find any typelib for Webkit
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: cannot import name Webkit
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
当我尝试从 GNOME Builder 3.32.4 (Flatpak'ed) 运行 GJS GNOME 示例应用程序时,出现错误:
bwrap: execvp <application-id>: No such file or directory
Run Code Online (Sandbox Code Playgroud)
我尝试了“清理”和“重建”项目,但没有任何帮助。
这仅发生在示例 GJS GNOME 应用程序中。C GNOME 应用程序似乎运行良好。
我正在移植liblarch,一个处理有向无环图的库,从PyGTK(GTK2)到PyGObject内省(GTK3).我遇到了GtkTreeView的问题.
使用liblarch的应用程序需要按列对GtkTreeView进行排序,但同时,用户可以拖放行,在另一行下移动一行.为此我必须手动处理dnd_data_get()
,dnd_data_receive()
这是完全可以的.
GtkTreeView的最小设置在PyGTK下运行.行已排序,用户可以移动行.
#!/usr/bin/python
# -*- coding: utf-8 -*-
import gtk
window = gtk.Window()
window.set_size_request(300, 200)
window.connect('delete_event', lambda w,e: gtk.main_quit())
# Define Liblarch Tree
store = gtk.TreeStore(str, str)
store.insert(None, -1, ["A", "Task A"])
store.insert(None, -1, ["B", "Task B"])
store.insert(None, -1, ["C", "Task C"])
d_parent = store.insert(None, -1, ["D", "Task D"])
store.insert(d_parent, -1, ["E", "Task E"])
# Define TreeView in similar way as it happens in GTG/Liblarch_gtk
tv = gtk.TreeView()
col = gtk.TreeViewColumn()
col.set_title("Title")
render_text …
Run Code Online (Sandbox Code Playgroud) 我开始使用Glade,python和Gtk3库构建GUI.我想尝试查看在GUI中的容器内链接它的外部窗口.可能吗?哪个是最好的容器对象呢?
我开始搜索,但Gtk2中的简单方法(就像这里)在Gtk3中不能再使用了.
我在这里发现了一个非常有趣的帖子,它允许我设置目标窗口的正确ID,但我仍然对如何在GUI中显示它感到困惑.
我没有试图用cairo 改变这些教程.
到目前为止我的代码片段(我想在map_area容器中显示ID = 0x360000b的窗口,我必须使用"self."处理结构).暂时map_area容器是Drawingarea.
# if condition occurs
Gdk.Window.process_all_updates()
win_id = 0x360000b # from xwininfo command
root_win = GdkX11.X11Display.get_default()
win = GdkX11.X11Window.foreign_new_for_display(root_win, win_id)
width = win.get_width()
height = win.get_height()
self.map_area = cairo.ImageSurface(cairo.FORMAT_ARGB32, width, height)
pixbuf = Gdk.pixbuf_get_from_window(win, 0, 0, width, height)
cr = cairo.Context(self.map_area)
Gdk.cairo_set_source_pixbuf(cr, pixbuf, 0, 0)
cr.paint()
Run Code Online (Sandbox Code Playgroud)
谁能帮我?先感谢您!