wxpython grid刷新数据_wxPython的 - 速度表实时更新

我创建使用六个BS18D20温度传感器发动机温度监测系统。我在网上发现了一个很棒的wxPython演示(速度计),演示了六种不同的风格测量仪。经过一番捣鼓之后,我转换了框架和六个面板,以显示我想要的具有所需温度范围的色带的样式表。调整框架时,Sizer也在工作。 温度测量代码也可以作为独立程序使用。斗争是 - 我怎样才能实时显示每个速度计面板的温度值。wxPython的 - 速度表实时更新

# -*- coding: utf-8 -*-

import wx

import wx.lib.buttons

import time

import os

import glob

import SpeedMeter as SM

from math import pi, sqrt

from datetime import datetime

# This Is For Latin/Greek Symbols I Used In The Demo Only

wx.SetDefaultPyEncoding('iso8859-1')

# Get Some Icon/Data

def GetMondrianData():

return \

'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00 \x00\x00\x00 \x08\x06\x00\

\x00\x00szz\xf4\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\x00\x00qID\

ATX\x85\xed\xd6;\n\x800\x10E\xd1{\xc5\x8d\xb9r\x97\x16\x0b\xad$\x8a\x82:\x16\

o\xda\x84pB2\x1f\x81Fa\x8c\x9c\x08\x04Z{\xcf\xa72\xbcv\xfa\xc5\x08 \x80r\x80\

\xfc\xa2\x0e\x1c\xe4\xba\xfaX\x1d\xd0\xde]S\x07\x02\xd8>\xe1wa-`\x9fQ\xe9\

\x86\x01\x04\x10\x00\\(Dk\x1b-\x04\xdc\x1d\x07\x14\x98;\x0bS\x7f\x7f\xf9\x13\

\x04\[email protected]\xf9X\xbe\x00\xc9 \x14K\xc1<={\x00\x00\x00\x00IEND\xaeB`\x82'

#

def GetMondrianBitmap():

return wx.BitmapFromImage(GetMondrianImage())

#

def GetMondrianImage():

import cStringIO

stream = cStringIO.StringIO(GetMondrianData())

return wx.ImageFromStream(stream)

#

def GetMondrianIcon():

icon = wx.EmptyIcon()

icon.CopyFromBitmap(GetMondrianBitmap())

return icon

# Beginning Of SPEEDMETER Demo wxPython Code

class SpeedMeterDemo(wx.Frame):

#

global meter1_val

global meter2_val

global meter3_val

global meter4_val

global meter5_val

global meter6_val

#

meter1_val = 0

#

def __init__(self):

wx.Frame.__init__(self, None, -1, "Cachalot II Engine Temperature Monitor",

wx.DefaultPosition,

size=(500,300),

style=wx.DEFAULT_FRAME_STYLE |

wx.NO_FULL_REPAINT_ON_RESIZE)

#

self.SetIcon(GetMondrianIcon())

self.statusbar = self.CreateStatusBar(2, wx.ST_SIZEGRIP)

self.statusbar.SetStatusWidths([-2, -1])

# statusbar fields

statusbar_fields = [("Engine Temperature Monitor"),

("Version 0.1")]

for i in range(len(statusbar_fields)):

self.statusbar.SetStatusText(statusbar_fields[i], i)

self.SetMenuBar(self.CreateMenuBar())

panel = wx.Panel(self, -1)

sizer = wx.FlexGridSizer(2, 3, 2, 5)

# 6 Panels To Hold The SpeedMeters ;-)

panel1 = wx.Panel(panel, -1, style=wx.SUNKEN_BORDER)

panel2 = wx.Panel(panel, -1, style=wx.RAISED_BORDER)

panel3 = wx.Panel(panel, -1, style=wx.SUNKEN_BORDER)

panel4 = wx.Panel(panel, -1, style=wx.RAISED_BORDER)

panel5 = wx.Panel(panel, -1, style=wx.SUNKEN_BORDER)

panel6 = wx.Panel(panel, -1, style=wx.RAISED_BORDER)

# Speed Meter 1

self.SpeedWindow1 = SM.SpeedMeter(panel1,

extrastyle=SM.SM_DRAW_HAND |

SM.SM_DRAW_PARTIAL_SECTORS |

SM.SM_DRAW_SECONDARY_TICKS |

SM.SM_DRAW_MIDDLE_TEXT |

SM.SM_DRAW_MIDDLE_ICON |

SM.SM_ROTATE_TEXT

)

self.SpeedWindow1.SetAngleRange(-pi/6, 7*pi/6)

intervals = range(0, 121, 10)

self.SpeedWindow1.SetIntervals(intervals)

colours = [wx.Colour(95, 118, 253)]*3 # Blue

colours.append(wx.Colour(51, 174, 48)) # Green

colours.append(wx.Colour(51, 174, 48)) # Green

colours.append(wx.Colour(51, 174, 48)) # Green

colours.append(wx.Colour(51, 174, 48)) # Green

colours.append(wx.Colour(247, 162, 9)) # yellow/red

colours.append(wx.Colour(247, 162, 9)) # yellow/red

colours.append(wx.Colour(244, 37, 6)) # red

colours.append(wx.Colour(244, 37, 6)) # red

colours.append(wx.Colour(244, 37, 6)) # red

self.SpeedWindow1.SetIntervalColours(colours)

ticks = [str(interval) for interval in intervals]

self.SpeedWindow1.SetTicks(ticks)

self.SpeedWindow1.SetTicksColour(wx.WHITE)

self.SpeedWindow1.SetTicksFont(wx.Font(8, wx.SWISS, wx.NORMAL, wx.NORMAL))

self.SpeedWindow1.SetHandColour(wx.Colour(255, 255, 255)) #(255, 50, 0)

self.SpeedWindow1.SetSpeedBackground(wx.SystemSettings_GetColour(0))

self.SpeedWindow1.DrawExternalArc(False)

self.SpeedWindow1.SetShadowColour(wx.Colour(50, 50, 50))

self.SpeedWindow1.SetMiddleText("Engine Output")

# Define The Icon We Want

icon = wx.Icon("temp.ico", wx.BITMAP_TYPE_ICO)

icon.SetWidth(10) # centre x axis

icon.SetHeight(-10) # below hand y axis

self.SpeedWindow1.SetMiddleIcon(icon)

self.SpeedWindow1.SetMiddleTextColour(wx.WHITE)

self.SpeedWindow1.SetMiddleTextFont(wx.Font(6, wx.SWISS, wx.NORMAL, wx.BOLD))

self.SpeedWindow1.SetSpeedBackground(wx.Colour(0, 000, 000)) #(200, 200, 200)

self.SpeedWindow1.SetSpeedValue(0)

#

#---------------- snip snip -------------------------------------

#

if __name__ == "__main__":

#

app = wx.PySimpleApp()

frame = SpeedMeterDemo()

frame.Show(True)

#frame.Maximize()

#

#

app.MainLoop()

#

2015-04-17

Andre

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值