gpt4 book ai didi

python - 重新粉刷开罗 window ?

转载 作者:行者123 更新时间:2023-11-28 16:49:19 25 4
gpt4 key购买 nike

我遇到了一个问题,我怀疑必须在 cairo 中绘制/绘制元素。

我在 pygtk 中有一个无边界窗口,但我用 cairo 绘制了两个矩形。一个黑色矩形和一个灰色矩形在里面。调整窗口大小时,内部矩形的某些部分似乎没有绘制/绘制。我附上了 3 个屏幕截图来显示此问题。

enter image description here enter image description here enter image description here

正如您在第二张和第三张图片中看到的, window 的某些部分没有涂成灰色。解决此问题的一种方法是调用 pygtk 的窗口的 present() 方法..但这会使我的程序非常慢,因为窗口的高度几乎会随着每次击键而变化。所以我想知道我有什么替代方案可以解决这个问题。

下面是我使用的相关cairo代码

def expose(self, widget, e):
cr = widget.window.cairo_create()

# Draw the background
cr.set_operator(cairo.OPERATOR_SOURCE)

# Create black rectangle with 60% opacity (serves as border)
(width, height) = widget.get_size()
cr.set_source_rgba(0, 0, 0, 0.6)
cr.rectangle(0, 0, width, height)
cr.fill()

# Inside the black rectangle, put a lighter one (will hold widgets)
(width, height) = widget.get_size()
cr.set_source_rgb(205/255, 205/255, 193/255)
cr.rectangle(10, 10, width-20, height-20)
cr.fill()

return False

def screen_changed(self, widget, old_screen = None):
screen = widget.get_screen()
colormap = screen.get_rgba_colormap()
widget.set_colormap(colormap)

最佳答案

我相信这基本上是一个 GTK+ 错误。调整窗口大小时,GTK+ 并不总是将整个窗口排队等待重新绘制。作为解决方法,您可以在导致窗口调整大小的位置调用 window.queue_draw()。

关于python - 重新粉刷开罗 window ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9651751/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com