Hallo,
ich habe jetzt die LED erstellt. Einzeln würde es gehen aber wenn ich es in meinen Code einbinde leider nicht mehr. Da sich die Grafik aufhängt.
LED Code
Code: Alles auswählen
def change_intensity(color, fac):
rgb = [color.Red(), color.Green(), color.Blue()]
for i, intensity in enumerate(rgb):
rgb[i] = min(int(round(intensity*fac, 0)), 255)
return wx.Color(*rgb)
class LED(wx.Control):
def __init__(self, parent, id=-1, colors=[wx.Colour(220, 10, 10), wx.Colour(250, 200, 0), wx.Colour(10, 220, 10),wx.Colour(240,240,240)],
pos=(-1,-1), style=wx.NO_BORDER):
size = (500, 500)
wx.Control.__init__(self, parent, id, pos, size, style)
self.MinSize = size
self._colors = colors
self._state = -1
self.SetState(0)
self.Bind(wx.EVT_PAINT, self.OnPaint, self)
def SetState(self, i):
if i < 0:
raise ValueError, 'Cannot have a negative state value.'
elif i >= len(self._colors):
raise IndexError, 'There is no state with an index of %d.' % i
elif i == self._state:
return
self._state = i
base_color = self._colors[i]
light_color = change_intensity(base_color, 1.15)
shadow_color = change_intensity(base_color, 1.07)
highlight_color = change_intensity(base_color, 1.25)
ascii_led = '''
000000-----00000000
0000---------000000
000-----------00000
00-----XXX----=0000
0----XX**XXX-===000
0---X***XXXXX===000
----X**XXXXXX====00
---X**XXXXXXXX===00
---XXXXXXXXXXX===00
---XXXXXXXXXXX===00
----XXXXXXXXX====00
0---XXXXXXXXX===000
0---=XXXXXXX====000
00=====XXX=====0000
000===========00000
0000=========000000
000000=====00000000
0000000000000000000
'''.strip()
xpm = ['19 30 5 1', # width height ncolors chars_per_pixel
'0 c None',
'X c %s' % base_color.GetAsString(wx.C2S_HTML_SYNTAX).encode('ascii'),
'- c %s' % light_color.GetAsString(wx.C2S_HTML_SYNTAX).encode('ascii'),
'= c %s' % shadow_color.GetAsString(wx.C2S_HTML_SYNTAX).encode('ascii'),
'* c %s' % highlight_color.GetAsString(wx.C2S_HTML_SYNTAX).encode('ascii')]
xpm += [s.strip() for s in ascii_led.splitlines()]
self.bmp = wx.BitmapFromXPMData(xpm)
self.Refresh()
def GetState(self):
return self._state
State = property(GetState, SetState)
def OnPaint(self, e):
dc = wx.PaintDC(self)
dc.DrawBitmap(self.bmp, 0, 0, True)
Dann habe ich meine Grafische Oberfläche(ein Auschnitt):
Code: Alles auswählen
class MyFrame(wx.Frame):
#"""make a frame, inherits wx.Frame"""
def __init__(self,parent,id,title):
# create a frame, no parent, default to wxID_ANY
wx.Frame.__init__(self, parent, id, title, pos=(0, 0), size=wx.DisplaySize(),style=wx.DEFAULT_FRAME_STYLE & ~ (wx.RESIZE_BORDER | wx.RESIZE_BOX | wx.MAXIMIZE_BOX))
self.panelD = wx.Panel(self.panelE, -1)#, style=wx.SIMPLE_BORDER)
self.panelD.SetBackgroundColour(wx.Colour(146,178,193))
self.panelD.SetConstraints(
layoutf.Layoutf('t_t#3;r=r#1;b%b70#1;l>1#2', (self,self.panelC,self.panelF))
)
self.LED6(3)
def LED6(self, farbe):
l6 = LED(self.panelD)
lcd_work = l6
lcd_work.SetState(farbe)
posi22 = self.pos(150, 410)
l6.Position=posi22
self.Show()[/code]
Wenn ich jetzt mit einem Modul in die def LED6() der Grafischen Oberfläche gehe.
hängt sich das ganze auf.
modul Auschnitt:
Code: Alles auswählen
class ThreadDatei(threading.Thread):
##################Thread Variable Zuweisung#####################
######################################################################
def __init__(self,parent1):
self.parent1 = parent1
def run (self):
while True:
time.sleep(2)
self.parent1.LED6(1)
[/code]
Oder wie könnte ich das ganze realisieren ?
Damit ich die LED ansteuern kann die auf der Grafische Oberfläche ist
VG