我使用Gtk.Image由a支持的 aGdkPixbuf.Pixbuf来显示照片。我缩放照片以适应可用空间以响应size-allocate父小部件的信号。问题是在 HiDPI 显示器上,每个维度都是逻辑像素而不是设备像素,因此会发生以下情况:
GdkPixbuf.Pixbuf到我从size-allocate信号中获得的尺寸,照片会占用所需的物理空间,但它只使用显示器分辨率的一半(假设设备像素与逻辑像素的比率为 2:1)。GdkPixbuf.Pixbuf到get_scale_factor()我从size-allocate信号中得到的维度的倍数,那么照片将占据物理空间的两倍(即,它无法放入窗口中)。我怎样才能让 GTK 知道Pixbuf我提供给图像的对应于设备像素而不是逻辑像素?
更新:这是我尝试过的(这些是我没有任何缩放的简化示例,只是尝试显示未缩放的图像):
尝试 1:
image = Gtk.Image()
image.set_from_file("subpixel.png")
Run Code Online (Sandbox Code Playgroud)
尝试 2:
surface = cairo.ImageSurface.create_from_png("subpixel.png")
image = Gtk.Image()
image.set_from_surface(surface)
Run Code Online (Sandbox Code Playgroud)
尝试 3:
pb = GdkPixbuf.Pixbuf.new_from_file("subpixel.png")
image = Gtk.Image.new_from_pixbuf(pb)
self.add(image)
Run Code Online (Sandbox Code Playgroud)
尝试 4:
pb = GdkPixbuf.Pixbuf.new_from_file("subpixel.png")
surface = cairo.ImageSurface(cairo.FORMAT_ARGB32, pb.get_width(), pb.get_height())
context = cairo.Context(surface)
Gdk.cairo_set_source_pixbuf(context, pb, 0, 0)
context.paint()
image = Gtk.Image()
image.set_from_surface(surface)
Run Code Online (Sandbox Code Playgroud) 我可以访问hdfs文件系统,可以看到镶木地板文件
hadoop fs -ls /user/foo
Run Code Online (Sandbox Code Playgroud)
如何将这些镶木地板文件复制到我的本地系统并将它们转换为csv以便我可以使用它们?这些文件应该是简单的文本文件,每行包含许多字段.
我在Hue中运行一个配置单元表的求和函数,并获得NaN的返回值。
这是我的代码:
select sum(v1) from hivedb.tb1;
我不知道为什么它会给我NaN结果。我检查了我的任何v1值是否为空:
select * from hivedb.tb1 where v1 is null;
,结果是没有记录具有空值。该表有1亿行,因此我无法手动检查每条记录。
任何帮助表示赞赏。先感谢您!
UPDATE 1 我手动筛选了前1000行,幸运的是在tb1中发现了NaN的一些异常值。这是由于先前步骤中的一些舍入错误造成的。因此,我的问题1可能得到了回答。如果您认为还有其他原因,请随时对此发表评论。
我仍然不知道如何使用一种有效的方法来发现具有NaN值的行。因此,我仍然期待对问题2的任何回答。请随时分享。我感谢您的帮助。
更新2 在下面的“讨论”部分中,通过已接受的答案可以解决该问题。有多种处理方法。
我使用的是Gtk.TreeView与Gtk.TreeStore作为层次数据模型。举个例子,让我们以一个音乐数据库组织成三个级别:艺术家/专辑/标题。我想使用文本搜索字段过滤这棵树。例如,在搜索字段中输入“Five”应该会沿着“Hank Marvin/Heartbeat/Take Five”路径给出结果。
我的理解是我需要创建一个回调函数并使用Gtk.TreeModelFilter.set_visible_func(). 问题是使“Take Five”的行可见并不足以使其出现,我还必须将其所有父项也设置为可见。但是,这需要我遍历树直到它的根并主动使每个节点沿着该路径可见,这不适合回调模式。
我认为使这个逻辑与回调模式一起工作的一种方法是检查回调函数中的整个子树,但这样每个叶节点都会被检查三遍。即使这样一个浅树的性能损失是可以接受的,这个 hack 还是让我起鸡皮疙瘩,我想避免使用它:
def visible_callback(self, model, iter, _data=None):
search_query = self.entry.get_text().lower()
if search_query == "":
return True
text = model.get_value(iter, 0).lower()
if search_query in text:
return True
# Horrible hack
for i in range(model.iter_n_children(iter)):
if self.visible_callback(model, model.iter_nth_child(iter, i)):
return True
return False
Run Code Online (Sandbox Code Playgroud)
在 GTK 中过滤树视图的预期方法是什么?(我的示例是用 Python 编写的,但是针对 GTK 的任何语言绑定的解决方案都可以。)
之间有什么区别TIMESTAMP,DATE和TIMESTAMP with TIMEZONE?
例如,如果我想搜索01-JAN-1990和 之间的所有条目01-JAN-2000 ,我将如何以每种格式进行搜索?
我一直在寻找时间戳:
SELECT COUNT(*) FROM TABLE_NAME WHERE DATE BETWEEN '01-JAN-1990' AND '01-JAN-2000;
Run Code Online (Sandbox Code Playgroud)
但我不确定使用什么格式来搜索DATE或TIMESTAMP WITH TIMEZONE.