gpt4 book ai didi

python - RuntimeError : Gtk couldn't be initialized. 如果要处理这种情况,请使用 Gtk.init_check()

转载 作者:行者123 更新时间:2023-12-04 18:25:59 42 4
gpt4 key购买 nike

我在 python 3.8.2 中编写了以下示例脚本:

import gi

gi.require_version("Gtk", "3.0")
from gi.repository import Gtk


class GridWindow(Gtk.Window):
def __init__(self):
Gtk.Window.__init__(self, title="Grid Example")

grid = Gtk.Grid()
self.add(grid)
grid.set_row_spacing(2)
grid.set_column_spacing(4)

button1 = Gtk.Button(label="Button 1")
button2 = Gtk.Button(label="Button 2")
button3 = Gtk.Button(label="Button 3")
button4 = Gtk.Button(label="Button 4")
button5 = Gtk.Button(label="Button 5")
button6 = Gtk.Button(label="Button 6")

grid.add(button1)
grid.attach(button2, 1, 0, 2, 1)
grid.attach_next_to(button3, button1, Gtk.PositionType.BOTTOM, 1, 2)
grid.attach_next_to(button4, button3, Gtk.PositionType.RIGHT, 2, 1)
grid.attach(button5, 1, 2, 1, 1)
grid.attach_next_to(button6, button5, Gtk.PositionType.RIGHT, 1, 1)


win = GridWindow()
win.connect("destroy", Gtk.main_quit)
win.show_all()
Gtk.main()

这只是虚拟示例。我打算通过 crontab 文件上的 cron 条目运行此代码,但是当我这样做时,出现以下错误:

Unable to init server: Could not connect: Connection refused
Traceback (most recent call last):
File "/home/dggt/Vscode/scratches/PythonExamples/gui_example/gi_config/sample_grid.py", line 31, in <module>
win = GridWindow()
File "/home/dggt/Vscode/scratches/PythonExamples/gui_example/gi_config/sample_grid.py", line 9, in __init__
Gtk.Window.__init__(self, title="Grid Example")
File "/usr/lib/python3/dist-packages/gi/overrides/Gtk.py", line 520, in __init__
raise RuntimeError(
RuntimeError: Gtk couldn't be initialized. Use Gtk.init_check() if you want to handle this case.

让这个错误更奇怪的是,当它通过我的 IDE 运行时它完美地工作,换句话说,带有按钮的窗口显示在屏幕上。这是我的规范:

  • Ubuntu 20.04
  • python 3.8.2

这是我的 crontab 条目:

  • */1 * * * */bin/python3/home/dggt/Vscode/scratches/PythonExamples/gui_example/gi_config/sample_grid.py

这是我的 cron 日志标题:

From dggt@dggt  Mon Jun 29 11:21:01 2020
Return-Path: <dggt@dggt>
X-Original-To: dggt
Delivered-To: dggt@dggt
Received: by dggt (Postfix, from userid 1000)
id 4F71A87D05; Mon, 29 Jun 2020 11:21:01 -0300 (-03)
From: root@dggt (Cron Daemon)
To: dggt@dggt
Subject: Cron <dggt@dggt> /bin/python3 /home/dggt/Vscode/scratches/PythonExamples/gui_example/gi_config/sample_grid.py
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Cron-Env: <PATH=/home/dggt/.local/bin:/home/dggt/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin>
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <HOME=/home/dggt>
X-Cron-Env: <LOGNAME=dggt>
Message-Id: <20200629142101.4F71A87D05@dggt>
Date: Mon, 29 Jun 2020 11:21:01 -0300 (-03)

有人知道哪里出了问题吗?我是否错过了一些在运行此脚本之前必须完成的预定义配置?

最佳答案

DISPLAY 环境变量未在 crontab 脚本中设置。仅设置了 HOMELOGNAMESHELL

快速修复 是在您的 cronscript 中添加变量。如 Option 1 中所述由@esbassi 链接。

在您的用户 session 中:

echo $DISPLAY
:0.0

在您的 crontab 条目中:

*/1 * * * * export DISPLAY=':0.0'; /bin/python3 /home/dggt/Vscode/scratches/PythonExamples/gui_example/gi_config/sample_grid.py

关于python - RuntimeError : Gtk couldn't be initialized. 如果要处理这种情况,请使用 Gtk.init_check(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62609786/

42 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com