You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kivy窗口为何自动比指定尺寸大25%?

Kivy窗口尺寸自动放大25%的解决方案

你遇到的问题是Kivy的高DPI适配机制导致的:当系统显示缩放比例为125%时,Kivy会自动将你设置的窗口尺寸乘以缩放系数,所以400px×1.25=500px,600px×1.25=750px,和你实际看到的结果完全匹配。

解决方法

方法1:完全禁用DPI自动缩放

在代码开头添加配置(必须在设置Window.size之前执行,否则可能不生效):

from kivy.config import Config
Config.set('graphics', 'disable_dpi', '1')

修改后的完整代码:

from kivy.config import Config
Config.set('graphics', 'disable_dpi', '1')

from kivy.app import App
from kivy.uix.widget import Widget
from kivy.core.window import Window

# screen dimensions, px
screen_width = 400
screen_height = 600
Window.size = (screen_width, screen_height)

class PlayGame(Widget):
    def on_touch_move(self, touch):
        self.touch = touch
        print(self.touch.x, self.touch.y)

class TestGame(App):
    def build(self):
        return PlayGame()

if __name__ == '__main__':
    game = TestGame()
    game.run()

方法2:手动指定缩放比例

如果你需要保留高DPI适配但想自定义缩放系数,可以设置DPI值(100对应100%缩放,125对应125%,以此类推):

from kivy.config import Config
Config.set('graphics', 'dpi', '100')

或者在Kivy 2.0及以上版本,直接设置窗口缩放比例:

Window.scale = 1.0  # 强制1:1缩放,即不放大窗口

补充说明

你查阅的文档中关于size的描述是针对窗口旋转场景的,和当前高DPI缩放问题无关,所以可以忽略那部分内容。

内容的提问来源于stack exchange,提问作者Arkleseisure

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 21:29:54