设置kivy窗口大小无效。

6

我遵循了这个stackoverflow问题,但两种替代方法都没有起作用。

这是我的代码:

from kivy.app import App
from kivy.uix.label import Label
from kivy.core.window import Window

class MyApp(App):
    def build(self):
        return Label(text='text')

if __name__ == '__main__':
    Window.size = (1366, 768)
    MyApp().run()

有时尺寸会发生变化,Kivy会创建一个大小为800x600的屏幕,然后将其更改为1366x768。有时Kivy会创建一个大小为800x600的屏幕,然后将其更改为1366x768,但是又回到了800x600
如果我将代码更改为:
from kivy.app import App
from kivy.uix.label import Label
from kivy.core.window import Window

from kivy.config import Config
Config.set('graphics', 'width', '200')
Config.set('graphics', 'height', '200')

class MyApp(App):
    def build(self):
        return Label(text='text')

if __name__ == '__main__':
    MyApp().run()

使用这段代码后,我的屏幕上没有任何反应。我正在使用Kivy v1.9.2-dev0版本。请问我该如何解决?


几天前我试过它可行。试试看是否有更小的东西可行。日志里没有任何消息吗? - Peter Badida
没有,当它工作和不工作的时候日志上没有区别。=( - Carlos Porta
如果窗口成功调整大小,应该会出现类似于“[DEBUG] [Window] Resize window to (x, y)” 的消息。还有其他的消息吗?最好将整个日志和其他信息(如操作系统、32/64位、窗口提供程序等)粘贴在这里。从那个大小来看,我猜你想要实现全屏,因此也可以尝试使用“Window.fullscreen = True”。 - Peter Badida
1
这是我的日志 https://bpaste.net/show/3105907ff5a3。我正在使用 Gentoo Linux - 64位,xfce 默认窗口管理器并且全屏工作正常。 - Carlos Porta
也许pygame在主分支上表现不佳。尝试使用sdl2,它是默认的提供程序。 - Peter Badida
这个不良的解决方案奏效了! - Carlos Porta
3个回答

15

在所有其他导入项之前设置配置设置 - 在导入窗口之后为时已晚,因为配置已经被访问以确定其初始大小,并且会忽略您的新设置。


谢谢您的回复,它起作用了。您知道为什么有时候使用窗口更改大小会出现问题吗? - Carlos Porta
听起来像是竞态条件,我不确定为什么会发生这种情况,但很可能与应用程序刚开始运行时发生了许多事情有关。 - inclement

6

0
def on_size(self,*args):#this funciton is written becase default size of canvas is 100*100 when done from code
    #print("on size : "+ str(self.width) +","+str(self.height))

请记住,Stack Overflow 不仅仅是为了解决当前的问题,还要帮助未来的读者找到类似问题的解决方案,这需要理解底层代码。对于我们社区中的初学者来说,这一点尤为重要,他们可能不熟悉语法。鉴于此,请问您能否编辑您的回答,包括对您所做的操作进行解释以及为什么您认为这是最佳方法? - Jeremy Caney

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接