Python 如何在Gtk中制作棒棒糖样的边栏?

Python 如何在Gtk中制作棒棒糖样的边栏?,python,gtk,gtk3,gnome,pygobject,Python,Gtk,Gtk3,Gnome,Pygobject,我一直在尝试制作一个简单的Gtk应用程序,其中包括一个与Lollypop音乐播放器中的侧栏类似的侧栏(如图所示),我不知道哪个布局容器最适合这样做,我尝试了垂直方向的Gtk.Box,但结果与我想要的相似。有人能为这个问题提出一个更好的解决方案吗?有人能为这个问题提出一种方法,把这个侧边栏放在窗口上,同时保持它的侧面固定不变。对于新开发人员来说,可能很难深入了解某些软件的源代码,但从长远来看,它确实对您有帮助。请查看Lollypop的源代码,了解您正在使用的功能 除此之外,在下面的代码中,我试图让

我一直在尝试制作一个简单的Gtk应用程序,其中包括一个与Lollypop音乐播放器中的侧栏类似的侧栏(如图所示),我不知道哪个布局容器最适合这样做,我尝试了垂直方向的Gtk.Box,但结果与我想要的相似。有人能为这个问题提出一个更好的解决方案吗?有人能为这个问题提出一种方法,把这个侧边栏放在窗口上,同时保持它的侧面固定不变。

对于新开发人员来说,可能很难深入了解某些软件的源代码,但从长远来看,它确实对您有帮助。请查看Lollypop的源代码,了解您正在使用的功能

除此之外,在下面的代码中,我试图让你们从我从你们的问题中理解的东西开始

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

class MyWindow(Gtk.Window):
    def __init__(self):
        Gtk.Window.__init__(self, title="Side Bar")
        self.hbox = Gtk.HBox();
        self.vbox = Gtk.VBox();
        self.button1 = Gtk.Button(label="1")
        self.button1.connect("clicked", self.on_button_clicked)
        self.button2 = Gtk.Button(label="2")
        self.button2.connect("clicked", self.on_button_clicked)
        self.button3 = Gtk.Button(label="3")
        self.button3.connect("clicked", self.on_button_clicked)
        self.button4 = Gtk.Button(label="4")
        self.button4.connect("clicked", self.on_button_clicked)
        self.vbox.add(self.button1);
        self.vbox.add(self.button2);
        self.vbox.add(self.button3);
        self.vbox.add(self.button4);
        self.entry = Gtk.Entry();
        self.entry.set_text("1");
        self.hbox.add(self.vbox);
        self.hbox.add(self.entry);
        self.add(self.hbox);
        self.maximize()

    def on_button_clicked(self, widget):
        self.entry.set_text(widget.get_label());

win = MyWindow()
win.connect("destroy", Gtk.main_quit)
win.show_all()
Gtk.main()
Lollypop的实现可能与上面的实现有很大的不同,因为它可能需要处理更多的事情,比如调整大小时按钮的响应大小,不同主题的外观和感觉,等等


建议:继续挖掘和贡献开源软件,以了解更多信息。

对于新开发人员来说,挖掘某些软件的源代码可能很困难,但从长远来看,这确实对您有帮助。请查看Lollypop的源代码,了解您正在使用的功能

除此之外,在下面的代码中,我试图让你们从我从你们的问题中理解的东西开始

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

class MyWindow(Gtk.Window):
    def __init__(self):
        Gtk.Window.__init__(self, title="Side Bar")
        self.hbox = Gtk.HBox();
        self.vbox = Gtk.VBox();
        self.button1 = Gtk.Button(label="1")
        self.button1.connect("clicked", self.on_button_clicked)
        self.button2 = Gtk.Button(label="2")
        self.button2.connect("clicked", self.on_button_clicked)
        self.button3 = Gtk.Button(label="3")
        self.button3.connect("clicked", self.on_button_clicked)
        self.button4 = Gtk.Button(label="4")
        self.button4.connect("clicked", self.on_button_clicked)
        self.vbox.add(self.button1);
        self.vbox.add(self.button2);
        self.vbox.add(self.button3);
        self.vbox.add(self.button4);
        self.entry = Gtk.Entry();
        self.entry.set_text("1");
        self.hbox.add(self.vbox);
        self.hbox.add(self.entry);
        self.add(self.hbox);
        self.maximize()

    def on_button_clicked(self, widget):
        self.entry.set_text(widget.get_label());

win = MyWindow()
win.connect("destroy", Gtk.main_quit)
win.show_all()
Gtk.main()
Lollypop的实现可能与上面的实现有很大的不同,因为它可能需要处理更多的事情,比如调整大小时按钮的响应大小,不同主题的外观和感觉,等等


建议:继续挖掘和贡献开源软件以了解更多信息。

您可以运行
GTK\u DEBUG=interactive应用程序
来使用
GTK inspector
。它允许您检查现有的用户界面,如lollypop,并检查小部件是如何绑定在一起的。 请阅读文档中的部分


如Mathan Tilva所说,要了解更多细节,您可以查看源代码。

您可以运行
GTK_DEBUG=interactive您的应用程序
来使用
GTK inspector
。它允许您检查现有的用户界面,如lollypop,并检查小部件是如何绑定在一起的。 请阅读文档中的部分


如Mathan Tilva所说,要了解更多细节,您可以查看源代码。

我看不出源代码看得多,但侧栏似乎是网格中的一个垂直工具栏。我看不出源代码看得多,但侧栏似乎是网格中的一个垂直工具栏。感谢我对网格做了同样的操作,并用CSS稍微调整了按钮,得到了我想要的结果谢谢我用网格做了同样的事情,用CSS稍微调整了一下按钮,得到了我想要的结果