Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 运行时错误:Gtk无法';无法初始化。如果要处理此情况,请使用Gtk.init_check()_Python_Ubuntu_Gtk_Pygtk - Fatal编程技术网

Python 运行时错误:Gtk无法';无法初始化。如果要处理此情况,请使用Gtk.init_check()

Python 运行时错误:Gtk无法';无法初始化。如果要处理此情况,请使用Gtk.init_check(),python,ubuntu,gtk,pygtk,Python,Ubuntu,Gtk,Pygtk,我用python 3.8.2编写了以下示例脚本: 导入gi gi.要求_版本(“Gtk”、“3.0”) 从gi.repository导入Gtk 类GridWindow(Gtk.Window): 定义初始化(自): Gtk.Window.\uuuu init\uuuuu(self,title=“网格示例”) grid=Gtk.grid() self.add(网格) 网格。设置行间距(2) 网格。设置列间距(4) 按钮1=Gtk.按钮(标签=“按钮1”) 按钮2=Gtk.按钮(标签=“按钮2”) 按

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

导入gi
gi.要求_版本(“Gtk”、“3.0”)
从gi.repository导入Gtk
类GridWindow(Gtk.Window):
定义初始化(自):
Gtk.Window.\uuuu init\uuuuu(self,title=“网格示例”)
grid=Gtk.grid()
self.add(网格)
网格。设置行间距(2)
网格。设置列间距(4)
按钮1=Gtk.按钮(标签=“按钮1”)
按钮2=Gtk.按钮(标签=“按钮2”)
按钮3=Gtk.按钮(标签=“按钮3”)
按钮4=Gtk.按钮(标签=“按钮4”)
按钮5=Gtk.按钮(标签=“按钮5”)
按钮6=Gtk.按钮(标签=“按钮6”)
添加网格(按钮1)
网格。连接(按钮2、1、0、2、1)
网格。在(按钮3、按钮1、Gtk.PositionType.BOTTOM、1、2)旁边连接
网格。连接到(按钮4、按钮3、Gtk.PositionType.RIGHT、2、1)旁边的网格
网格。连接(按钮5、1、2、1、1)
网格。连接到(按钮6、按钮5、Gtk.PositionType.RIGHT、1、1)旁边的网格
win=GridWindow()
win.connect(“破坏”,Gtk.main_退出)
赢,全力以赴
Gtk.main()
这只是一个虚构的例子。 我打算通过crontab文件上的cron条目运行此代码,但当我这样做时,会出现以下错误:

无法初始化服务器:无法连接:连接被拒绝
回溯(最近一次呼叫最后一次):
文件“/home/dggt/Vscode/scratch/pythonnemples/gui_example/gi_config/sample_grid.py”,第31行,在
win=GridWindow()
文件“/home/dggt/Vscode/scratch/pythonnemples/gui_example/gi_config/sample_grid.py”,第9行,在u_init中__
Gtk.Window.\uuuu init\uuuuu(self,title=“网格示例”)
文件“/usr/lib/python3/dist packages/gi/overrides/Gtk.py”,第520行,在__
引发运行时错误(
运行时错误:无法初始化Gtk。如果要处理此情况,请使用Gtk.init_check()。
使这个错误更奇怪的是,当它在我的IDE中运行时,它可以完美地工作,换句话说,带有按钮的窗口显示在屏幕上。 这是我的规格:

  • Ubuntu 20.04
  • python 3.8.2
这是我的crontab条目:

*/1 * * * * export DISPLAY=':0.0'; /bin/python3 /home/dggt/Vscode/scratches/PythonExamples/gui_example/gi_config/sample_grid.py
  • */1****/bin/python3/home/dgt/Vscode/scratches/pythonnemples/gui\u example/gi\u config/sample\u 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)
来自dggt@dggt2020年6月29日星期一11:21:01
返回路径:
X-原件至:dggt
交付给:dggt@dggt
接收:由dggt(后缀,来自用户ID 1000)
id 4F71A87D05;星期一,2020年6月29日11:21:01-0300(-03)
发件人:root@dggt(Cron守护进程)
致:dggt@dggt
主题:Cron/bin/python3/home/dgt/Vscode/scratches/pythonnypes/gui_-example/gi_-config/sample_-grid.py
MIME版本:1.0
内容类型:文本/普通;字符集=UTF-8
内容传输编码:8比特
X-Cron-Env:
X-Cron-Env:
X-Cron-Env:
X-Cron-Env:
消息Id:
日期:2020年6月29日星期一11:21:01-0300(-03)

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

crontab脚本未在中启动。显示服务器连接未传播到您的脚本

这就是您收到此消息的原因:

Unable to init server: Could not connect: Connection refused

这会告诉您GTK无法初始化显示连接。

crontab脚本中未设置
显示
环境变量。仅设置了
主页
日志名
外壳

快速修复将在cronscript中添加变量。如@esbassi链接中所述

在用户会话中:

echo $DISPLAY
:0.0
在crontab条目中:

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

我阅读了你答案链接上的帖子,并对帖子中建议的crontab脚本进行了修复,但没有成功。我已经用cron连接的电子邮件服务器发送的日志更新了我的问题。也许它可以向你提供更多信息,以便你可以帮助我。