Gdk.Screen.get_default() 在 PyInstaller 之后不工作
Gdk.Screen.get_default() not working after PyInstaller
再一次,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_default()”返回 NULL。
这就是 GDK 文档中描述的行为:
gdk_screen_get_default ()
Returns: a GdkScreen, or NULL if there is no default display.
对我来说,当 运行 和 Python 时,它成功地 returns GdkScreen 对象,但在 PyInstaller 可执行文件中 returns NULL。
那么,为什么这个函数在可执行文件中没有检测到“默认显示”,如何让它工作?
PS:我有一个类似的 PyInstaller 制作的 EXE 在 Windows 中运行良好,但它使用不同的库来读取屏幕数据。
通过使用替代导入获取屏幕信息解决了我的问题。现在我的函数看起来像这样:
# 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 位 Linux Mint 17.3 上测试。
仍然不知道是什么导致了我原来使用的库的问题。
再一次,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_default()”返回 NULL。
这就是 GDK 文档中描述的行为:
gdk_screen_get_default ()
Returns: a GdkScreen, or NULL if there is no default display.
对我来说,当 运行 和 Python 时,它成功地 returns GdkScreen 对象,但在 PyInstaller 可执行文件中 returns NULL。
那么,为什么这个函数在可执行文件中没有检测到“默认显示”,如何让它工作?
PS:我有一个类似的 PyInstaller 制作的 EXE 在 Windows 中运行良好,但它使用不同的库来读取屏幕数据。
通过使用替代导入获取屏幕信息解决了我的问题。现在我的函数看起来像这样:
# 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 位 Linux Mint 17.3 上测试。
仍然不知道是什么导致了我原来使用的库的问题。