如何在Gtk 3的框中强制小部件的大小

时间:2016-10-11 09:25:48

标签: python-3.x gtk

我正在创建一个应该有一个主要的 textview 的程序(参见textview)用户应该写的和一个控制台,程序应该返回错误消息。所以控制台应该比文本编辑器更小。
我还在窗口顶部有一个工具栏,允许用户使用我的程序工具来编辑文本。
为此,我创建了一个全局框,我使用pack_start属性(self.global_box.pack_start(self.console))

放置工具栏,textview和控制台(也是textview对象)

工具栏已正确放置(我按了一个按钮,因此它可以有一个长度,并且它可以工作),但其余的空间是均匀由控制台和textview采取,而我我希望控制台只占用我窗户的一小部分空间 我怎么能强制我的控制台只占用我的窗口的20个像素?或者仅为textview设置窗口的百分比?

非常感谢 我

PS:here is a screenshot of the window, so you can have an idea of what I'm talking about.

编辑: 感谢回复,问题看起来是一样的,但解决方案对我没有用 这是代码:

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)

问题在于此处有评论。

1 个答案:

答案 0 :(得分:1)

您将set_hexpandset_vexpand设置为True,这意味着它们会展开。删除它们,它将正常工作。