suche schon seit stunden im netz und bekomm das mit den radiobutton nicht hin
soll Radiobuttons unabhängig voneinander ein und ausschalten
abfrage des jeweiligen zustandes
Code: Alles auswählen
# -*- coding: cp1252 -*-
import sys
import os
import wx
import wx.lib.scrolledpanel as scrolled
class Hpgl_Viewer_Mill(wx.Frame):
def __init__(self, parent=None, id=-1, title='test RADIOBUTTEN'):
wx.Frame.__init__(self, parent, id, title,pos=(10,10), size=(300, 370))
# Panel für Button und Scrollfenster
panel = wx.Panel(self, -1, size=(300,350))
#Button
self.button = wx.Button(panel, -1, "Beenden")
#Radiobutton
self.rb_umriss = wx.RadioButton(panel, 1004, 'Platinen_Ummriss',size=wx.DefaultSize)
self.rb_einelinie = wx.RadioButton(panel, 1005, 'nur 1 Linie',size=wx.DefaultSize)
self.rb_umriss.SetValue(True)
self.rb_einelinie.SetValue(False)
#'horizontal arangment oben
self.eingabesizer = wx.BoxSizer(wx.HORIZONTAL)
self.eingabesizer.Add( self.button,0,wx.ALIGN_LEFT)
#'horizontal arangment unten
self.auswahlsizer = wx.BoxSizer(wx.HORIZONTAL)
self.auswahlsizer.Add( self.rb_umriss,0,wx.ALIGN_LEFT)
self.auswahlsizer.Add((5, 5))
self.auswahlsizer.Add( self.rb_einelinie,0,wx.ALIGN_LEFT)
self.platine = (580,480)
size = self.platine #(580, 580)
#Scrollfenster
self.scrollw = wx.ScrolledWindow(panel, -1,
style=wx.SUNKEN_BORDER, size=(250,250))
self.scrollw.SetScrollbars(1, 1, self.platine[0]-2,self.platine[1]-2)
#Sizer
mainsizer = wx.BoxSizer(wx.VERTICAL)
mainsizer.Add((10, 10))
mainsizer.Add(self.eingabesizer, 0, wx.ALIGN_CENTER)
mainsizer.Add((10, 10))
mainsizer.Add(self.scrollw, 0, wx.ALIGN_CENTER)
mainsizer.Add((5, 5))
mainsizer.Add(self.auswahlsizer, 0, wx.ALIGN_CENTER)
panel.SetSizer(mainsizer)
#Bindungen
self.Bind(wx.EVT_BUTTON, self.close, self.button)
self.Bind(wx.EVT_RADIOBUTTON, self.umriss, id=1004)
self.Bind(wx.EVT_RADIOBUTTON, self.einelinie, id=1005)
# Bild, auf dem die Grafik gezeichnet wird
self.bmp = self.get_base_bitmap(size)
# Aufruf Paint-Event
self.scrollw.Bind(wx.EVT_PAINT, self.on_paint)
# und jetzt wird gezeichnet
self.drawPicture()
def Zoom(self):
self.bmp = self.get_base_bitmap(self.platine)
self.drawPicture()
self.scrollw.Scroll(self.platine[0]-2,self.platine[1]-2)
self.scrollw.Scroll(1,1)
def get_base_bitmap(self, size):
bmp = wx.EmptyBitmap(*size)
self.dr = wx.MemoryDC(bmp)
self.dr.SetBackground(wx.WHITE_BRUSH)
self.dr.Clear()
self.dr.SelectObject(wx.NullBitmap)
return bmp
def einelinie(self,event):
#print 'hier einelinie'
#print self.rb_einelinie.GetId()
#print self.rb_einelinie.GetValue()
if self.rb_einelinie.GetValue() == True:
self.rb_einelinie.SetValue(False)
else:
self.rb_einelinie.SetValue(True)
#print self.rb_einelinie.GetValue()
self.Zoom()
def umriss(self,event):
#print 'hier ummriss'
#print self.rb_umriss.GetValue()
if self.rb_umriss.GetValue()== True:
self.rb_umriss.SetValue(False)
else:
self.rb_umriss.SetValue(True)
self.Zoom()
def on_paint(self, event=None):
wx.BufferedPaintDC(self.scrollw, self.bmp, style=wx.BUFFER_VIRTUAL_AREA)
def drawPicture(self):
self.dr = wx.MemoryDC(self.bmp)
self.dr.SelectObject(wx.NullBitmap)
"""
Hier soll er was mit dem button druck tun
dazu muss sich ja was ändern beim drücken des RADIOBUTTON
"""
print self.rb_einelinie.GetValue()
def close(self, event):
self.Destroy()
def OnCloseWindow(self, event=None):
self.Destroy()
def main():
app = wx.PySimpleApp()
fenster = Hpgl_Viewer_Mill()
fenster.Center()
fenster.Show()
app.MainLoop()
if __name__ == "__main__":
main()