Я хочу показать изображение на рамке, используя 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()