Gdk.Screen.get_默认值()在Pyns之后没有工作

2024-09-29 19:19:34 发布

您现在位置:Python中文网/ 问答频道 /正文

再一次,我有一个问题,PyInstaller编译的可执行文件与python脚本的工作方式不一样。。。在

我需要在程序中读取系统屏幕分辨率,因此我为其添加了一个简单的函数:

# Get screen size for Linux
from gi.repository.Gdk import Screen 
def GetResolution():
    screenvar = Screen.get_default()
    width = screenvar.get_width()
    height = screenvar.get_height()
    return [width, height]

当用Python启动时,它可以完美地工作。在

但是,使用PyInstaller生成的可执行文件崩溃了。一开始我以为是图书馆钩子的问题-以前见过。但事实并非如此——库和它的函数都起作用了,但事实证明”Screen.get_默认值()”返回NULL。在

这就是GDK文档中描述的行为:

gdk_screen_get_default ()

Returns: a GdkScreen, or NULL if there is no default display.

对我来说,当使用Python运行时,它成功地返回GdkScreen对象,但在PyInstaller可执行文件中返回NULL。在

那么,为什么这个函数在可执行文件中没有检测到“默认显示”,以及如何使其工作?在

PS:我有一个类似的PyInstaller制作的EXE在Windows下运行良好,但是它使用不同的库来读取屏幕数据。在


Tags: 函数脚本可执行文件defaultget屏幕方式width
1条回答
网友
1楼 · 发布于 2024-09-29 19:19:34

通过使用替代导入来获取屏幕信息,解决了我的问题。现在我的函数如下:

# Get screen size for Linux
import gtk
def GetResolution():
    window = gtk.Window()
    screen = window.get_screen()
    width = gtk.gdk.screen_width()
    height = gtk.gdk.screen_height()
    return [width, height]

在python脚本和PyInstaller可执行文件中都可以工作,在32位和64位linuxmint17.3上进行了测试。在

还是不知道是什么原因导致了我最初使用的库出现问题。在

相关问题 更多 >

    热门问题