【问题标题】:How to remove border around Gtk Widgets and Window?如何删除 Gtk 小部件和窗口周围的边框?
【发布时间】:2014-03-14 00:28:28
【问题描述】:

我正在使用 PyGi Gtk3 制作一个 Gtk.Window,它在小部件和主窗口周围添加了一个恼人的边框:

边框是两个图像之间和窗口外部的灰色边框。任何人都知道如何完全删除它?所以这两个图像可以无缝连接在一起。

这是我的代码:

#!/usr/bin/python3
#encoding:utf-8


from gi.repository import Gtk, Gdk


class TestMainWindow(Gtk.Window):

    def __init__(self):
        Gtk.Window.__init__(self, title="Test Window")
        self.set_resizable(False)

        self.box = Gtk.Box(orientation='vertical')
        self.add(self.box)

        self.album_cover = Gtk.Image()
        self.album_cover.set_from_file('../reference/album-cover.jpg')
        self.box.pack_start(self.album_cover, True, True, 0)

        self.album_cover2 = Gtk.Image()
        self.album_cover2.set_from_file('../reference/album-cover.jpg')
        self.box.pack_end(self.album_cover2, True, True, 0)


def main():
    win = TestMainWindow()
    win.connect('delete-event', Gtk.main_quit)
    win.show_all()
    Gtk.main()


if __name__ == '__main__':
    main()

【问题讨论】:

    标签: python gtk pygtk


    【解决方案1】:

    尝试将继承自 GtkWidget 的“margins”属性设置为 FALSE。在 C 中,这是使用 g_object_set 完成的。

    【讨论】:

    • 嗨,你能解释一下吗?我已经尝试在 Windows 中使用self.set_border_width(0),但没有任何效果。这是相同的还是不同的?
    • 我刚刚测试了你的代码,事实上我没有使用你使用的相同代码的灰色区域。因此,要么您使用某种经过调整的主题,要么更可能灰色区域属于图像。顺便说一句,不, set_border_width 与边距属性无关。 "margin" 是一个 GtkWidget 属性。您可以使用self.album_cover.set_property("margin", 0) 设置它的值,但默认值已经是 0,所以我认为它不会改变任何东西。阅读python-gtk-3-tutorial.readthedocs.org/en/latest/… 了解如何操作属性。
    • 我正在使用 Awesome WM。在 Awesome 我有灰色区域,但后来,我在 Elementary OS 环境中尝试过,灰色区域消失了。 Awesome 不使用窗口合成,所以我放弃了它。还剩下什么?那和主题有关吗?因为我有没有这个边框的应用程序,所以可能有办法禁用它。非常感谢您的帮助。
    • 顺便说一句,当我说我没有灰色边框时,我的测试配置是 GNOME 3.6 + 默认 Adwaita 主题。
    猜你喜欢
    • 2011-12-23
    • 2012-01-13
    • 1970-01-01
    • 1970-01-01
    • 2011-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多