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
相关产品推荐
相关产品推荐

