Показывать изображение в wxpython и использовать потоки и обновления каждый раз - PullRequest
0 голосов
/ 06 февраля 2019

Я хочу показать изображение на рамке, используя wxpython.Но я могу показать несколько изображений на одном кадре.В моей системе обновление изображения очень важно, и мне нужно показывать каждые 0,2 секунды.Но в системе время входящего изображения не фиксируется.Использование последовательности действий возможно, но мне нужно сократить время ожидания для каждого изображения.Я обнаружил, что использование потоков может быть одним из решений.Однако использование потоков в bmp в wxpython имеет небольшую проблему.

Вот мой код.в файле изображения, в системе, новое изображение будет обновляться каждые 0,2 секунды.Но в этом случае время поступления изменится.поэтому я хочу сократить время обновления в python и использовать потоки в функции image_reading в моем коде

import time
import wx
import cStringIO
import threading


########################################################################
class MyPanel(wx.Panel):
""""""

#----------------------------------------------------------------------
    def __init__(self, parent):
        """Constructor"""
        wx.Panel.__init__(self, parent)

        # pick an image file you have in the working folder
        # you can load .jpg  .png  .bmp  or .gif files
        background_image = 'new2.png'
        bmp_background = wx.Image(background_image, wx.BITMAP_TYPE_ANY).ConvertToBitmap()
        # image's upper left corner anchors at panel coordinates (0, 0)
        self.bitmap1 = wx.StaticBitmap(self, -1, bmp_background, (0, 0))

        # show some image details
        str1 = "%s  %dx%d" % (background_image, bmp_background.GetWidth(), bmp_background.GetHeight())
        parent.SetTitle('consumer application')

        self.font = wx.Font(25, wx.DEFAULT, wx.NORMAL, wx.NORMAL)
        self.flashingText = wx.StaticText(self, label = 'time of pi1', pos = (380, 280))
        self.flashingText2 = wx.StaticText(self, label = 'time of pi2', pos = (600, 280))
        self.flashingText.SetForegroundColour('red')
        self.flashingText2.SetForegroundColour('red')

        self.timer = wx.Timer(self)
        self.Bind(wx.EVT_TIMER, self.update, self.timer)
        self.timer.Start(400)


    def update(self, event):
        def image_reading(x, y):
            imageFile = 'image.png'
            data = open(imageFile, "rb").read()
            stream = cStringIO.StringIO(data)
            bmp = wx.BitmapFromImage( wx.ImageFromStream( stream ))
            wx.StaticBitmap(self, -1, bmp, (x, y))

        image_reading(100, 100)
        image_reading(100, 400)

class MyFrame(wx.Frame):
""""""

    def __init__(self):
        """Constructor"""
        wx.Frame.__init__(self, None, title="An image on a panel", size = (1600, 900))
        panel = MyPanel(self)
        self.Show()


if __name__ == "__main__":
    app = wx.App(False)
    frame = MyFrame()
    app.MainLoop()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...