【问题标题】:How do I get the usable screen resolution?如何获得可用的屏幕分辨率?
【发布时间】:2020-04-28 21:00:22
【问题描述】:

我正在使用 pygame 在 Mac 上制作游戏。我试图让我的窗口在不全屏的情况下填满屏幕。问题是当我使用pygame.display.get_surface().get_size()(返回1366x 768)时,底部的Dock和Topbar的高度没有被减去。我知道 Dock 大小因 MacBook 和 MacBook 不同而不同,因为人们会更改它,我正在努力让我的游戏在所有同学的 MacBook 以及他们的 Windows 计算机上无缝运行。

我想获得不包括 Mac 上的 Dock/Topbar 和 Windows 上的任务栏的屏幕尺寸。我已经看到一个关于如何在 Java 中链接 here 的线程,但我似乎找不到任何关于 Python 的内容。

【问题讨论】:

    标签: python


    【解决方案1】:

    假设您使用的是 tkinter,简单的解决方案是实现:

    import Tkinter as tk
    
    class FullScreenApp(object):
        def __init__(self, master, **kwargs):
            self.master=master
            pad=3
            self._geom='200x200+0+0'
            master.geometry("{0}x{1}+0+0".format(
                master.winfo_screenwidth()-pad, master.winfo_screenheight()-pad))
            master.bind('<Escape>',self.toggle_geom)            
        def toggle_geom(self,event):
            geom=self.master.winfo_geometry()
            print(geom,self._geom)
            self.master.geometry(self._geom)
            self._geom=geom
    
    root=tk.Tk()
    app=FullScreenApp(root)
    root.mainloop()
    

    在填充屏幕时显示工具栏:

    import tkinter as tk
    
    class Fullscreen_Example:
        def __init__(self):
            self.window = tk.Tk()
            self.fullScreenState = False
            self.window.attributes("-fullscreen", self.fullScreenState)
    
            self.w, self.h = self.window.winfo_screenwidth(), self.window.winfo_screenheight()
            self.window.geometry("%dx%d" % (self.w, self.h))
    
            self.window.bind("<F11>", self.toggleFullScreen)
            self.window.bind("<Escape>", self.quitFullScreen)
    
            self.window.mainloop()
    
        def toggleFullScreen(self, event):
            self.fullScreenState = not self.fullScreenState
            self.window.attributes("-fullscreen", self.fullScreenState)
    
        def quitFullScreen(self, event):
            self.fullScreenState = False
            self.window.attributes("-fullscreen", self.fullScreenState)
    
    if __name__ == '__main__':
        app = Fullscreen_Example()
    

    【讨论】:

    • 我正在使用 pygame,我只是想获取可用区域的尺寸,以便将我的 pygame 窗口的大小设置为可用区域。
    • 好!要使用 pygame 和 tkinter,只需键入“import tkinter as tk”或“import tkinter”,您可以使用我提供的代码,如果需要,请查看我的其他答案以进行澄清。 :D
    • 我仍然很困惑如何将您的 tkinter 用于 pygame。我以前从未使用过 tkinter,只是 pygame。
    • 我知道我必须输入 import tkinter,但是 pygame 使用我认为基于 tkinter 的自己的窗口,我不知道如果我仍然可以使用 pygame 窗口在 tkinter 中创建一个新窗口。
    【解决方案2】:

    太棒了!只需复制我提供的代码就可以了!如果您试图检索代表屏幕大小的变量,只需:

    from win32api import GetSystemMetrics
    
    print("Width =", GetSystemMetrics(0))
    print("Height =", GetSystemMetrics(1))
    

    【讨论】:

      猜你喜欢
      • 2013-09-30
      • 2014-10-25
      • 2011-11-10
      • 2011-04-10
      • 2013-06-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多