当程序打开时,当屏幕分辨率改变时,如何确定Kivy布局的位置?

2024-10-03 17:23:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我用Kivy构建了一个用户界面,当程序启动时它会正确显示,但是如果我插入一个新的监视器(或者拖动到一个扩展的监视器上),窗口下的所有内容都会消失,但是当我最大化窗口时,我可以看到我的部分工作。如何将程序定位到窗口的开头?在

我试图每秒钟将主布局的顶部值与窗口的顶部值相匹配,并尝试每隔一秒重置主布局的位置。在

我的kivy文件

#:import inch kivy.metrics.inch

<Questionaire>:
    #column_gl: ColumnGL
    outer_column_gl: OuterColumnGL
    cols: 2

    GridLayout:
        id: OuterColumnGL
        cols: 1
        size_hint_x: None
        width: inch(2)
        GridLayout:
            id: ColumnGL
            cols: 2
            size_hint_y: .9
            Button:
                size_hint_x: None
                width: inch(.1)
            Button:
                text: 'stuff'
        Button:
            size_hint_y: .1
            text: 'more stuff'

我想把它修好

^{pr2}$

这是我第一次打开程序时出现的情况。 This is what comes up when I first open the program.

当我把我的窗口拖到一个扩展的监视器上时,就会出现这种情况(一切似乎都消失了)。 This is what comes up as soon as I drag my window to an extended monitor (Everything appears to have disappeared).

这是我在扩展监视器上的最大化窗口(y位置错误)。 Here is my maximized window on the extended monitor (The y position is wrong).


Tags: 程序sizecolumnbutton布局监视器cols消失
1条回答
网友
1楼 · 发布于 2024-10-03 17:23:16

使用size_hint_x或size_hint_x可以设置小部件相对于其父部件的大小。使用“pos_hint:{'x':val,'y':val}”将小部件的位置设置为其父部件。因为size_hint和pos_hint都是相对于它们的父窗口小部件的,所以x和y的值在0-1之间。在

我建议你的按钮使用size_hint_x:0-1,而不是宽度,这样它们会自动调整以适应不断变化的分辨率。我会拿出一个样品来帮你。在

无论使用builder还是.kv文件,大小和位置最好用kv语言完成。添加的类和函数不需要有反应式小部件。如果你需要更多的澄清或者有任何关于kivy的问题,请告诉我。在

如果你想自动缩放,我再次推荐你的小部件如下:

size_hint_x: 0.00-1.00
size_hint_y: 0.00-1.00
pos_hint: {'x': 0.00-1.00, 'y': 0.00-1.00}

一个应该向您展示它是如何工作的示例,尽管我怀疑您需要所有额外的导入,因为这是为了在更改分辨率时显示一致性:

^{pr2}$

相关问题 更多 >