GtkLabel расширяется вертикально в горизонтальной рамке - PullRequest
0 голосов
/ 28 сентября 2018

Я пытаюсь поместить виджет записи с меткой в ​​одну строку, используя горизонтальное поле.Тем не менее, этикетка расширяется по вертикали.Он принимает начальную высоту окна и не дает усадиться под ним.Я перепробовал все возможные комбинации заливки, расширения, выравнивания и т. Д., Но это не изменилось.

Как это исправить?

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 Ответ

0 голосов
/ 28 сентября 2018

Добавьте еще одну вертикальную рамку перед горизонтальной рамкой:

#!/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)

...