我正在寻找一种通用方法,使用 matplotlib 和任何交互式后端(例如 TkAgg、Qt4Agg 或 macosx)来获取屏幕大小(以像素为单位)。
我正在尝试编写一个函数,它可以在屏幕上的一组标准位置打开一个窗口,例如屏幕的右半部分或右上角。
我在这里编写了一个工作解决方案,复制在下面,但它需要使用 full_screen_toggle() (如此处建议的)来创建一个全屏窗口来测量其大小。
我正在寻找一种方法来获取屏幕大小,而无需创建全屏窗口然后更改其大小。
import matplotlib.pyplot as plt
def move_figure(position="top-right"):
'''
Move and resize a window to a set of standard positions on the screen.
Possible positions are:
top, bottom, left, right, top-left, top-right, bottom-left, bottom-right
'''
mgr = plt.get_current_fig_manager()
mgr.full_screen_toggle() # primitive but works to get screen size
py = mgr.canvas.height()
px = mgr.canvas.width()
d = 10 # width of the window border in pixels
if position == "top": …Run Code Online (Sandbox Code Playgroud) 我有一个Tkinter窗口,需要保持在所有其他窗口(包括全屏窗口)之上。
我尝试过的事情:
root.attributes('-topmost', True) 在mainloop之前-不起作用
self.root.wm_attributes("-topmost", True) 在班级内部-不起作用
root.overrideredirect(True) 在mainloop之前-仅适用于Linux
root.lift() 在mainloop之前-不起作用
最后,我root.lift()将被反复称为:
class TestingGUI:
def __init__(self, root):
self.root = root
self.EnsureTop()
def EnsureTop(self):
root.lift()
root.after(5000, self.EnsureTop)`
Run Code Online (Sandbox Code Playgroud)
从某种意义上说,它可以成功地将窗口提升到我手动切换为“始终在顶部”的任何其他窗口上,例如使用Dexpot,但至关重要的是,它不适用于全屏应用程序。
具体来说,我需要在游戏中展示它,因为它是游戏中的音乐播放器。我对需要重复使用某些命令以确保再次将窗口调用到顶部的解决方案很好。
我在 python 中使用pyautogui来获取屏幕截图
import pyautogui
screen = pyautogui.screenshot()
screen.save("file.jpg")
Run Code Online (Sandbox Code Playgroud)
它在所有平台上的单个屏幕上运行良好。但在多屏幕系统中,它将两个屏幕组合在一个屏幕截图中。但我想要一张当前正在使用的显示器的屏幕截图。
我想要整个桌面的 X/Y 像素尺寸(可能跨越多个显示器),例如确定背景图像的最佳分辨率。
这段 Python 代码仍然有效:
from gi import require_version
require_version("Gdk", "3.0")
from gi.repository import Gdk
screen = Gdk.Screen.get_default()
print(screen.get_width(), " ", screen.get_height())
Run Code Online (Sandbox Code Playgroud)
但打印出弃用警告:
<string>:7: DeprecationWarning: Gdk.Screen.get_width is deprecated
<string>:7: DeprecationWarning: Gdk.Screen.get_height is deprecated
Run Code Online (Sandbox Code Playgroud)
Gdk.Screen API 文档仅指出:
自版本 3.22 起已弃用:改为使用每个监视器信息
其他答案(例如How do I get Monitor resolution in Python或How to detector a computer'sphysical screen size in GTK)提到了许多其他 API 和工具包,或者只是提供每个显示器的信息(例如PyGtk),但我认为它应该仍然可以(也在将来)通过 PyGtk 获取整个桌面的尺寸。(毕竟,已弃用的函数仍然提供了此功能。)
我在OS Linux上使用Python PyGTK库(suse,ubuntu)在具有多个显示监视器的设备上工作.
我试图在连接到设备的特定显示器监视器上放置一个全屏窗口(在python中,gtk.Window).
我正在使用以下代码:
n_monitors = gtk.gdk.Screen.get_n_monitors() # Get number of monitors.
gtk.gdk.Screen.get_monitor_geometry(*monitor_number*) # Get the size of a specific monitor.
Run Code Online (Sandbox Code Playgroud)
第二个api返回监视器大小和偏移信息.
gtk.Window.move(offset_x, offse_y)可用于在特定监视器上移动窗口.
虽然这似乎并不常用.看起来窗口与鼠标位置具有亲和力,或者如果监视器分辨率不同,则不起作用.
是否有gtk.Window的任何属性可以帮助缓解此问题.我试过玩下面没有帮助:
gtk.Window.set_position(gtk.WIN_POS_NONE)
gtk.Window.set_gravity(gtk.gdk.GRAVITY_NORTH_WEST)
Run Code Online (Sandbox Code Playgroud)
有任何想法吗.
我试图使我的GUI程序与Windows上屏幕的右下角对齐。当任务栏未隐藏时,我的程序将仅位于任务栏顶部!
使用Python / PyQT / Win32时,如何:
当使用pywin的win32api时,我得到的光标位置值不正确.我的屏幕分辨率是1920x1080,但是当我使用GetCursorPos()时,左上角有(0,0),右下角有(1535,863).我使用的代码如下:
import win32api
def getCursor():
print win32api.GetCursorPos()
Run Code Online (Sandbox Code Playgroud)
我在Windows 10上使用python 2.7尝试这个,但是我在Windows 8上的python 2.6中也遇到了这个错误.这个问题是否有任何解决方案或解决方法?
我正在尝试使用 python 中的 Pillow查找某些文本的大小(以磅为单位) 。据我了解,以磅为单位的字体大小对应于目标显示器或表面上的实际物理英寸,每英寸 72 点。当我使用 Pillow 的textsize方法时,我可以找到以给定字体大小(以磅为单位)呈现的某些文本的像素大小,但不知道如何返回基于英寸的坐标系,因为我没有(并且无法设置)图像的像素密度:
from PIL import Image, ImageFont, ImageDraw
image = Image.new('RGBA', (400, 300), (255, 255, 255))
font = ImageFont.truetype('/Library/Fonts/Arial.ttf', 16)
image.info['dpi'] = 100
print( ImageDraw.Draw(image).textsize('Loreum ipsum', font=font) )
image.info['dpi'] = 1000
print( ImageDraw.Draw(image).textsize('Loreum ipsum', font=font) )
Run Code Online (Sandbox Code Playgroud)
将打印
(101, 18)
(101, 18)
Run Code Online (Sandbox Code Playgroud)
如何获得给定文本的大小(以磅为单位) ?
python ×8
windows ×3
linux ×2
pygtk ×2
python-3.x ×2
winapi ×2
gdk ×1
image ×1
macos ×1
matplotlib ×1
pyqt ×1
python-2.7 ×1
pywin32 ×1
screen ×1
tkinter ×1
typography ×1
windows-10 ×1