我一直在尝试制作一个简单的Gtk应用程序,该应用程序包括一个类似于Lollypop音乐播放器中的侧边栏的侧边栏(如此处https://youtu.be/2IhJCrKz3N4所示),我不是哪个布局容器最适合这种情况,我尝试了Gtk.Box垂直方向,但结果类似于我想要的。有人可以为此建议一个更好的解决方案,以及一种将侧杆放置在窗户上同时保持其侧面固定的方法。
最佳答案
对于新开发人员而言,可能难以挖掘某些软件的源代码,但从长远来看,它确实对您有帮助。请在https://gitlab.gnome.org/World/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的实现可能与上面的实现有很大不同,因为它可能需要处理更多的事情,例如调整大小时的按钮响应大小,具有不同主题的外观等。
ADVISE:继续努力并为开源软件做出贡献,以了解更多信息。
关于python - 如何在Gtk中制作类似侧边栏的Lollypop?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57137192/