Как заставить размер виджета в поле с Gtk 3

Я создаю программу, которая должна иметь основное текстовое представление (см. textview), где пользователь должен писать, и консоль, где программа должна возвращать сообщения об ошибках. Таким образом, консоль должна быть меньше, чем текстовый редактор.
У меня также есть панель инструментов в верхней части окна, которая позволяет пользователю получить доступ к инструментам моей программы для редактирования текста.
Для этого , я создал глобальное поле, в которое я поместил панель инструментов, текстовое представление и консоль (которая также является объектом текстового представления), используя атрибут pack_start (self.global_box.pack_start(self.console)))

Панель инструментов размещена правильно (я поместил кнопку, чтобы она имела длину, и она работает), но остальная часть пространства однородно занята консолью и текстовым представлением, тогда как мне бы хотелось, чтобы console занимать лишь небольшую часть моего окна.
Как я могу заставить свою консоль занимать, например, только 20 пикселей моего окна? или установить процент моего окна только для текстового просмотра?

большое спасибо мне

PS: вот скриншот окна, чтобы вы могли понять, о чем я говорю .

РЕДАКТИРОВАТЬ: спасибо за ответ, вопрос выглядит так же, но решение не работает для меня.
Вот код:

class Window(Gtk.Window):
def __init__(self):
    Gtk.Window.__init__(self,title='Text editor')
    self.maximize()
    self.global_box = Gtk.Box(orientation=Gtk.Orientation.VERTICAL)
    self.add(self.global_box)

    self.create_textview()
    self.create_console()

def create_textview(self):
    self.scrolled_window = Gtk.ScrolledWindow()
    self.scrolled_window.set_hexpand(True)
    self.scrolled_window.set_vexpand(True)
    self.global_box.pack_start(self.scrolled_window, True, True, 0)

    self.textview = Gtk.TextView()
    self.textbuffer = self.textview.get_buffer()
    self.scrolled_window.add(self.textview)
    self.tag_found = self.textbuffer.create_tag('found',background='yellow')

def create_console(self):
    self.console_scrolled_window = Gtk.ScrolledWindow()
    self.console_scrolled_window.set_hexpand(True)
    self.console_scrolled_window.set_vexpand(True)
    self.global_box.pack_start(self.console_scrolled_window, False, False, 0)  #HERE /!\ the first one is expand argument, second one is irrelevant (the fill one)

    self.console = Gtk.TextView()
    self.console_scrolled_window.add(self.console)
    self.console.set_editable(False)

Проблема в строке, где есть комментарий ЗДЕСЬ.


person BlackBeans    schedule 11.10.2016    source источник
comment
Вы хотите, чтобы пользователь регулировал расстояние между двумя половинками? В этом случае используйте GtkPaned. В противном случае, пожалуйста, покажите свой код.   -  person andlabs    schedule 13.10.2016
comment
@oldtechaa да, но в Gtk 3 метод pack_start принимает ровно 4 аргумента, один из которых — расширение. Я пытался изменить его, но он все еще не работает...   -  person BlackBeans    schedule 13.10.2016
comment
@andlabs нет, я не позволю пользователю изменить размер консоли.   -  person BlackBeans    schedule 13.10.2016
comment
Я второй andlabs на этом. Нам нужно увидеть ваш код. Кроме того, покажите, что вы пробовали для expand. Параметр expand определенно вам нужен.   -  person oldtechaa    schedule 13.10.2016
comment
@oldtechaa Я добавлял это :)   -  person BlackBeans    schedule 13.10.2016
comment
Почему для консоли установлено значение heexpand и vexpand = True, если вы не хотите, чтобы она расширялась? Обычно вам никогда не понадобятся эти функции, если вы используете блоки. Ящики справятся с расширением за вас. Кроме того, в будущем, пожалуйста, публикуйте MCVE с любым вопросом, когда вы его задаете.   -  person oldtechaa    schedule 13.10.2016
comment
@oldtechaa Я действительно не знаю, зачем мне их использовать, я прочитал в документе, что мне просто нужно их поставить, чтобы получить прокручиваемое окно ...   -  person BlackBeans    schedule 15.10.2016
comment
@oldtechaa ну, я попытался удалить их и... это работает!!! большое спасибо, действительно помогло   -  person BlackBeans    schedule 15.10.2016


Ответы (1)


Вы устанавливаете set_hexpand и set_vexpand на True, что означает, что они будут расширяться. Удалите их, и он будет работать правильно.

person oldtechaa    schedule 15.10.2016