繁体   English   中英

python:X服务器上的致命IO错误11(资源暂时不可用):0.0

[英]python: Fatal IO error 11 (Resource temporarily unavailable) on X server :0.0

我正在尝试阅读一些图像(后来打算对它们执行某些任务),同时将图像读入内存。 我想显示一个动画的'.gif'图片。 为此我不得不使用Threads。 现在它给出错误:

python: Fatal IO error 11 (Resource temporarily unavailable) on X server :0.0.

有时它会给出错误:

python: Fatal IO error 0 (Success) on X server :0.0.

(是错误消息几乎交替更改)我不知道为什么会发生此错误以及如何删除它。

import wx
from wx import animate
import thread
import os
class AniGif(wx.Dialog):
   def __init__(self, parent, id, title):
      wx.Dialog.__init__(self, parent, id, title, size=(300, 300))
      buttonOk = wx.Button(self, id=3, label="Ok", pos=(75, 50), size=(50, 50))
      self.Bind(wx.EVT_BUTTON, self.OnClick, id=3)

   def OnClick(self, event) :
      clock = "loading.gif"
      showclock = wx.animate.GIFAnimationCtrl(self, -1, clock)
      showclock.Play()
      thread.start_new_thread(grabImages, ( ))

def grabImages():
    global dirim
    dirim = {}
    path = './images/soccer/'
    listing = os.listdir(path)
    for infile in listing:
        if len(infile)>4 and infile[-4:]=='.jpg' :
            print path+infile
            dirim[infile]=wx.Bitmap(path+infile)

app = wx.App()
dia = AniGif(None, -1, "Ani Gif")
dia.ShowModal()
dia.Destroy()
app.MainLoop()

如果我更换这条线

dirim[infile]=wx.Bitmap(path+infile)

用虚线:

dirim[infile]=infile

它工作正常,没有错误。

如果我更换这条线

thread.start_new_thread(grabImages, ( ))

用这样的东西:

grabImages()

它工作正常,没有错误。 唯一的问题我无法显示动画gif然后..

我试图删除〜/ .gconf中/桌面/ GNOME /外围设备如提到的链接通过给华金 它不起作用..我也试过'xhost +'。 我从网上的某个地方找到了。 仍然没有成功。

请告诉我们这段代码中发生了什么..并建议我使用ubuntu 10.04操作系统的解决方案。 目录权限是:

drwxr-xr-x images
drwxr-xr-x soccer

Python verion的细节是:关于linux2的Python 2.6.5(r265:79063,2010年4月16日,13:09:56)[GCC 4.4.3]

你的代码在win7中非常适合我,wxpython 2.8.12.1和python 2.6.7运行在Spe版本0.8.4.i上,当图像位于脚本目录中时(我使用了我自己的动画gif和png)。

除了wx和use之外,我需要的唯一更改是导入animate( from wx import animate

showclock = animate.GIFAnimationCtrl(self, -1, clock)

代替

showclock = wx.animate.GIFAnimationCtrl(self, -1, clock)

编辑:有几个人在这里这里这里有同样的错误消息。 最后一个让我觉得它可能与在linux中使用带有gui框架的线程有关另见相关内容 )。 你应该谷歌错误字符串,以查看是否可以获得更多信息或在错误字符串作为主题的SO上询问特定问题。 UF! 已经有一个了

不知道它是否与您的问题有关,但您应该在创建wxApp之后实例化对话框并调用其ShowModal:

class App(wx.App):
    def OnInit(self):
        dia = AniGif(None, -1, "Ani Gif")
        try:
            dia.ShowModal()
        finally:
            dia.Destroy()
        return True

App(0).MainLoop()

==编辑==

我没有看到你从另一个线程实例化了一个wx.Bitmap。 这不好。 试试这个:

def grabImages():
    global dirim
    dirim = {}
    def addToDict(key, path):
        dirim[key] = wx.Bitmap(path)
    path = './images/soccer/'
    listing = os.listdir(path)
    for infile in listing:
        if len(infile)>4 and infile[-4:]=='.jpg' :
            print path+infile
            wx.CallAfter(addToDict, infile, path+infile)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM