Python 3.x 如何更改Gtk3堆垛机控制装置';对齐

Python 3.x 如何更改Gtk3堆垛机控制装置';对齐,python-3.x,layout,gtk3,Python 3.x,Layout,Gtk3,我想使用Gtk3堆栈切换器作为布局容器,只是想知道是否可以通过任何方式将控制按钮的对齐方式更改为垂直,因为默认情况下,它们显示在一行中,并且水平对齐 PS:我想更改控件本身的对齐方式,而不是堆栈的内容是的,这是可能的。实现接口并从Gtk.Box继承 如果使用,则小部件“常规属性”选项卡中有一个组合框,用于选择方向 您还可以使用以下方法以编程方式执行此操作: 让我们以Python Gtk+3为例,更改堆栈切换器的方向: import gi gi.require_version('Gtk', '3.

我想使用Gtk3堆栈切换器作为布局容器,只是想知道是否可以通过任何方式将控制按钮的对齐方式更改为垂直,因为默认情况下,它们显示在一行中,并且水平对齐

PS:我想更改控件本身的对齐方式,而不是堆栈的内容是的,这是可能的。实现接口并从Gtk.Box继承

如果使用,则小部件“常规属性”选项卡中有一个组合框,用于选择方向

您还可以使用以下方法以编程方式执行此操作:

让我们以Python Gtk+3为例,更改堆栈切换器的方向:

import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk

class StackWindow(Gtk.Window):

    def __init__(self):
        Gtk.Window.__init__(self, title="Stack Demo")
        self.set_border_width(10)

        vbox = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, spacing=6)
        self.add(vbox)

        stack = Gtk.Stack()
        stack.set_transition_type(Gtk.StackTransitionType.SLIDE_LEFT_RIGHT)
        stack.set_transition_duration(1000)

        checkbutton = Gtk.CheckButton("Click me!")
        stack.add_titled(checkbutton, "check", "Check Button")

        label = Gtk.Label()
        label.set_markup("<big>A fancy label</big>")
        stack.add_titled(label, "label", "A label")

        stack_switcher = Gtk.StackSwitcher()
        stack_switcher.set_stack(stack)
        stack_switcher.set_orientation(Gtk.Orientation.VERTICAL)
        vbox.pack_start(stack_switcher, True, True, 0)
        vbox.pack_start(stack, True, True, 0)

win = StackWindow()
win.connect("delete-event", Gtk.main_quit)
win.show_all()
Gtk.main()
导入gi
gi.require_版本('Gtk','3.0')
从gi.repository导入Gtk
类堆栈窗口(Gtk.Window):
定义初始化(自):
Gtk.Window.uuu init_uuuu(self,title=“堆栈演示”)
自行设置边框宽度(10)
vbox=Gtk.Box(方向=Gtk.orientation.VERTICAL,间距=6)
self.add(vbox)
stack=Gtk.stack()
stack.set_transition_type(Gtk.StackTransitionType.SLIDE_LEFT_RIGHT)
堆栈。设置转换持续时间(1000)
checkbutton=Gtk.checkbutton(“单击我!”)
堆栈。添加标题为(检查按钮,“检查”,“检查按钮”)
label=Gtk.label()
标签。设置标记(“花式标签”)
堆栈。添加标题为(标签,“标签”,“A标签”)
堆栈切换器=Gtk.StackSwitcher()
堆栈切换器。设置堆栈(堆栈)
堆叠切换器.设置切换器方向(Gtk.方向.垂直)
vbox.pack\u start(堆栈切换器,真,真,0)
vbox.pack_start(堆栈,真,真,0)
win=StackWindow()
win.connect(“删除事件”,Gtk.main_退出)
赢,全力以赴
Gtk.main()
预期结果是:


垂直Gtk。堆叠切换器。

@Jose Fonte,谢谢兄弟……我接受了你的建议并尝试使用它,但过了一段时间,我发现了其他更容易解决我问题的方法。a.所以我最终使用了它,因为这正是我想要的。

谢谢你,我不知道……还有一个问题,“单击我”组合框,我怎样才能把它放在窗口的左边,例如除了“检查按钮”或“标签”之外?@silverhash您似乎在“看”之后。所示的示例容器布局并不适合您的需要。有一个垂直的GtkBox,堆栈切换器位于顶部,堆栈位于底部子容器上。然后顶层窗口,施加10px的间隔,这就是为什么小部件不紧跟在窗口之后。将边框宽度设置为0,将主Gtk.Box容器设置为水平,结果应该与您需要的更相似是的,我忘记了。好。我编辑了您的答案,将其链接到PyGObject API。祝你好运
import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk

class StackWindow(Gtk.Window):

    def __init__(self):
        Gtk.Window.__init__(self, title="Stack Demo")
        self.set_border_width(10)

        vbox = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, spacing=6)
        self.add(vbox)

        stack = Gtk.Stack()
        stack.set_transition_type(Gtk.StackTransitionType.SLIDE_LEFT_RIGHT)
        stack.set_transition_duration(1000)

        checkbutton = Gtk.CheckButton("Click me!")
        stack.add_titled(checkbutton, "check", "Check Button")

        label = Gtk.Label()
        label.set_markup("<big>A fancy label</big>")
        stack.add_titled(label, "label", "A label")

        stack_switcher = Gtk.StackSwitcher()
        stack_switcher.set_stack(stack)
        stack_switcher.set_orientation(Gtk.Orientation.VERTICAL)
        vbox.pack_start(stack_switcher, True, True, 0)
        vbox.pack_start(stack, True, True, 0)

win = StackWindow()
win.connect("delete-event", Gtk.main_quit)
win.show_all()
Gtk.main()