Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/286.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应用程序的显示?_Python_Python 2.7_Gtk_Environment Variables - Fatal编程技术网

如何使用子流程设置python应用程序的显示?

如何使用子流程设置python应用程序的显示?,python,python-2.7,gtk,environment-variables,Python,Python 2.7,Gtk,Environment Variables,我正在与奇怪的问题作斗争。所以。。。 我用Python2.7编写了这个守护进程/服务。它正在使用subprocess.Popen启动用gtk编写的GUI应用程序 env = os.environ.copy() env["DISPLAY"] = ":0" env["XAUTHORITY"] = "~/.Xauthority" subprocess.Popen('python2.7 /path/bla/bla/myapp.py', env=env, shell=True) 我得到这个错误: /us

我正在与奇怪的问题作斗争。所以。。。 我用Python2.7编写了这个守护进程/服务。它正在使用subprocess.Popen启动用gtk编写的GUI应用程序

env = os.environ.copy()
env["DISPLAY"] = ":0"
env["XAUTHORITY"] = "~/.Xauthority"
subprocess.Popen('python2.7 /path/bla/bla/myapp.py', env=env, shell=True)
我得到这个错误:

/usr/lib/python2.7/site-packages/gtk-2.0/gtk/__init__.py:57: GtkWarning: could not open display
  warnings.warn(str(e), _gtk.Warning)
/path/bla/bla/myapp.pypy:43: Warning: invalid (NULL) pointer instance
  self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
/path/bla/bla/myapp.pypy:43: Warning: g_signal_connect_data: assertion 'G_TYPE_CHECK_INSTANCE (instance)' failed
  self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
/path/bla/bla/myapp.pypy:93: GtkWarning: Screen for GtkWindow not set; you must always set
a screen for a GtkWindow before using the window
  self.window.show_all()
/path/bla/bla/myapp.pypy:93: GtkWarning: IA__gdk_pango_context_get_for_screen: assertion 'GDK_IS_SCREEN (screen)' failed
  self.window.show_all()
/path/bla/bla/myapp.pypy:93: PangoWarning: pango_context_set_font_description: assertion 'context != NULL' failed
  self.window.show_all()
/path/bla/bla/myapp.pypy:93: PangoWarning: pango_context_set_base_dir: assertion 'context != NULL' failed
  self.window.show_all()
/path/bla/bla/myapp.pypy:93: PangoWarning: pango_context_set_language: assertion 'context != NULL' failed
  self.window.show_all()
/path/bla/bla/myapp.pypy:93: PangoWarning: pango_layout_new: assertion 'context != NULL' failed
  self.window.show_all()
/path/bla/bla/myapp.pypy:93: PangoWarning: pango_layout_set_text: assertion 'layout != NULL' failed
  self.window.show_all()
/path/bla/bla/myapp.pypy:93: PangoWarning: pango_layout_set_attributes: assertion 'layout != NULL' failed
  self.window.show_all()
/path/bla/bla/myapp.pypy:93: PangoWarning: pango_layout_set_alignment: assertion 'layout != NULL' failed
  self.window.show_all()
/path/bla/bla/myapp.pypy:93: PangoWarning: pango_layout_set_ellipsize: assertion 'PANGO_IS_LAYOUT (layout)' failed
  self.window.show_all()
/path/bla/bla/myapp.pypy:93: PangoWarning: pango_layout_set_single_paragraph_mode: assertion 'PANGO_IS_LAYOUT (layout)' failed
  self.window.show_all()
/path/bla/bla/myapp.pypy:93: PangoWarning: pango_layout_set_wrap: assertion 'PANGO_IS_LAYOUT (layout)' failed
  self.window.show_all()
/path/bla/bla/myapp.pypy:93: PangoWarning: pango_layout_set_width: assertion 'layout != NULL' failed
  self.window.show_all()
/path/bla/bla/myapp.pypy:93: PangoWarning: pango_layout_get_extents: assertion 'layout != NULL' failed
  self.window.show_all()
/path/bla/bla/myapp.pypy:93: GtkWarning: IA__gdk_screen_get_display: assertion 'GDK_IS_SCREEN (screen)' failed
  self.window.show_all()
/path/bla/bla/myapp.pypy:93: GtkWarning: IA__gdk_display_get_pointer: assertion 'GDK_IS_DISPLAY (display)' failed
  self.window.show_all()
/path/bla/bla/myapp.pypy:93: GtkWarning: IA__gdk_screen_get_n_monitors: assertion 'GDK_IS_SCREEN (screen)' failed
  self.window.show_all()
/path/bla/bla/myapp.pypy:93: GtkWarning: IA__gdk_screen_get_monitor_geometry: assertion 'GDK_IS_SCREEN (screen)' failed
  self.window.show_all()
/path/bla/bla/myapp.pypy:100: GtkWarning: IA__gdk_screen_get_root_window: assertion 'GDK_IS_SCREEN (screen)' failed
  bitmap = gtk.gdk.Pixmap(None, w, h, 1)
/path/bla/bla/myapp.pypy:100: GtkWarning: IA__gdk_drawable_get_depth: assertion 'GDK_IS_DRAWABLE (drawable)' failed
  bitmap = gtk.gdk.Pixmap(None, w, h, 1)
如果我将传递到此子流程的bash progam
env
的输出保存到文件中,我将得到以下结果:

_=/usr/bin/env
LANG=pl_PL.UTF8
DISPLAY=:0
INVOCATION_ID=148ed44288654745b0a5a6ab4a8da7c1
PWD=/
JOURNAL_STREAM=9:62236
SHLVL=2
XAUTHORITY=~/.Xauthority
PATH=/usr/local/sbin:/usr/local/bin:/usr/bin

解决方案
我必须改变:

env["XAUTHORITY"] = "~/.Xauthority"
引导路径。就我而言:

env["XAUTHORITY"] = "/root/.Xauthority"

请将您的解决方案作为完整答案发布。