gpt4 book ai didi

python - GtkOverlay 隐藏 GtkTextView

转载 作者:太空宇宙 更新时间:2023-11-03 16:10:54 24 4
gpt4 key购买 nike

我正在尝试使用 Gtk 开发应用程序,但在使用 GtkOverlay 时遇到了问题。如果我有一个带有使用标准容器 add 方法添加的 GtkTextViewGtkOverlay,则文本将被隐藏。然而,所有其他小部件(例如按钮)看起来都很好。更奇怪的是,只有使用 add_overlay 添加至少一个小部件时,才会出现此行为。

enter image description here

enter image description here

#!/usr/bin/env python
import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk

USE_OVERLAY = False

win = Gtk.Window()
text_view = Gtk.TextView()
overlay = Gtk.Overlay()
top_button = Gtk.Button()
bottom_button = Gtk.Button()
top_container = Gtk.VBox()
bottom_container = Gtk.VBox()

overlay_str = "( USE_OVERLAY = " + str(USE_OVERLAY) + ")"
win.set_title(overlay_str)

top_button.set_label("I'm a button on top!")
bottom_button.set_label("I'm a button on bottom!")
text_view.get_buffer().set_text("This should be visible")

win.add(overlay)
overlay.add(bottom_container)
bottom_container.pack_start(bottom_button, False, False, 0)
bottom_container.pack_end(text_view, True, True, 0)
if USE_OVERLAY:
overlay.add_overlay(top_container)
top_container.pack_end(top_button, False, False, 0)

win.connect("delete-event", Gtk.main_quit)
overlay.show_all()

win.show_all()
Gtk.main()

我有理由相信这不是一个Python问题,因为实际的应用程序是使用haskell-gi编写的,但是我认为更多的人会熟悉Python。

最佳答案

我不知道你在什么系统上运行这个例子,但它对我来说工作得很好。唯一需要注意的是顶部按钮出现在底部按钮和 TextView 小部件上方,因此我必须手动调整 Window 大小才能看到文本。您可以在此视频中看到我的情况的屏幕截图:https://youtu.be/xoAH4OuEM0E

现在,根据您真正想要的,可能会有一些不同的答案。我建议将 TextView 放入 ScrolledWindow 中。这样,在您需要调整窗口大小之前,TextView 至少是可见的。如果文本溢出可见区域,也会产生提供滚动条的结果。

它可能看起来像这样:

import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk

USE_OVERLAY = True

win = Gtk.Window()
text_view = Gtk.TextView()
overlay = Gtk.Overlay()
top_button = Gtk.Button()
bottom_button = Gtk.Button()
top_container = Gtk.VBox()
bottom_container = Gtk.VBox()

overlay_str = "( USE_OVERLAY = " + str(USE_OVERLAY) + ")"
win.set_title(overlay_str)

top_button.set_label("I'm a button on top!")
bottom_button.set_label("I'm a button on bottom!")
text_view.get_buffer().set_text("This should be visible")

# This is where the text_view is inserted in a ScrolledWindow
scrolled_window = Gtk.ScrolledWindow()
scrolled_window.add(text_view)

win.add(overlay)
overlay.add(bottom_container)
bottom_container.pack_start(bottom_button, False, False, 0)
# The scrolled_window is inserted in the bottom_container
bottom_container.pack_end(scrolled_window, True, True, 0)
if USE_OVERLAY:
overlay.add_overlay(top_container)
top_container.pack_end(top_button, False, False, 0)

win.connect("delete-event", Gtk.main_quit)
overlay.show_all()

win.show_all()
Gtk.main()

您还可以在上述截屏视频中看到结果。唯一的缺点是顶部按钮无法像脚本中那样覆盖底层。但也许它不会打扰你。

关于python - GtkOverlay 隐藏 GtkTextView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39319292/

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