代码之家  ›  专栏  ›  技术社区  ›  Jan Bodnar

GtkLabel在水平框中垂直展开

  •  2
  • Jan Bodnar  · 技术社区  · 7 年前

    我正在尝试使用水平框将带有标签的条目小部件放在一行中。但是,标签会垂直展开。它以窗口的初始高度为准,不允许收缩到窗口以下。我尝试了所有可能的组合填充,扩展,对齐等,但它没有改变。

    如何修复?

    Expanded label

    #!/usr/bin/env python3
    
    import gi
    gi.require_version('Gtk', '3.0')
    from gi.repository import Gtk, Gdk
    
    class MyWindow(Gtk.Window):
    
        def __init__(self):
            super(MyWindow, self).__init__()
    
            self.init_ui()
    
        def init_ui(self):    
    
    
            hbox = Gtk.Box(Gtk.Orientation.HORIZONTAL, 6)
            hbox.set_homogeneous(True)
            hbox.set_baseline_position(Gtk.BaselinePosition.CENTER)
    
            entry = Gtk.Entry()
            entry.modify_bg(Gtk.StateType.NORMAL, Gdk.Color(6400, 6400, 6440))
            entry.connect("key-release-event", self.on_key_release)
    
            hbox.pack_start(entry, False, False, 10)
    
            self.label = Gtk.Label("Hello")
            self.label.set_width_chars(15)
            self.label.modify_bg(Gtk.StateType.NORMAL, Gdk.Color(40000, 40000, 40000))
            hbox.pack_start(self.label, False, False, 10)
    
            self.add(hbox)
    
            self.set_title("Entry")
            self.set_size_request(350, 250)
    
            self.connect("destroy", Gtk.main_quit)
            self.show_all()
    
        def on_key_release(self, widget, event):
            self.label.set_text(widget.get_text())
    
    
    win = MyWindow()
    Gtk.main()
    
    1 回复  |  直到 7 年前
        1
  •  2
  •   theGtknerd    7 年前

    在水平框之前添加另一个垂直框:

    #!/usr/bin/env python3
    
    import gi
    gi.require_version('Gtk', '3.0')
    from gi.repository import Gtk, Gdk
    
    class MyWindow(Gtk.Window):
    
        def __init__(self):
            super(MyWindow, self).__init__()
    
            self.init_ui()
    
        def init_ui(self):    
    
    
    
            hbox = Gtk.Box(orientation = Gtk.Orientation.HORIZONTAL, spacing = 6)
            hbox.set_homogeneous(True)
            hbox.set_baseline_position(Gtk.BaselinePosition.CENTER)
    
            entry = Gtk.Entry()
            entry.modify_bg(Gtk.StateType.NORMAL, Gdk.Color(6400, 6400, 6440))
            entry.connect("key-release-event", self.on_key_release)
    
            hbox.pack_start(entry, False, False, 10)
    
            self.label = Gtk.Label("Hello")
            self.label.set_width_chars(15)
            self.label.modify_bg(Gtk.StateType.NORMAL, Gdk.Color(40000, 40000, 40000))
            hbox.pack_start(self.label, False, False, 10)
    
            vbox = Gtk.Box(orientation = Gtk.Orientation.VERTICAL)
            vbox.pack_start(hbox, False, False, 0)
            self.add(vbox)
    
            self.set_title("Entry")
            self.set_size_request(350, 250)
    
            self.connect("destroy", Gtk.main_quit)
            self.show_all()
    
        def on_key_release(self, widget, event):
            self.label.set_text(widget.get_text())
    
    
    win = MyWindow()
    Gtk.main()
    

    顺便说一句,在Python3和Gtk中,使用非关键字参数并不总是能正常工作,而不是 hbox = Gtk.Box(Gtk.Orientation.HORIZONTAL, 6) hbox = Gtk.Box(orientation = Gtk.Orientation.HORIZONTAL, spacing = 6)

    推荐文章