Ich habe es zwar geschafft eine eigenständige Klasse zuschreiben die mir ein Viereck zeichnet, aber ich schaffe es einfach nicht in meinem aktuellen Programm die Zeichenfunktion zu aktivieren.
Ich möchte gerne, dass ich auf meinem aktuellen Fenster auch DrawLine benutzen kann. Ich möchte gerne in der Methode def OnClick zeichnen, doch alle bisherigen Versuche schlugen fehl, da das Zeichnen unter Zuhilfenahme von Labels doch sehr unschön ist...
Also es wäre nett, wenn mir jemand sagen kann was genau ich in meinem Code abändern muss, damit ich DrawLine in der genannten Methode nutzen kann. Benutze wxpython zum ersten mal, von daher wäre es nett mir genau zu sagen wo ich was einfügen muss.

Hier mein bisheriger Code
Code: Alles auswählen
import wx
import math
import random
class MyFrame(wx.Frame, wx.Window):
def __init__(self):
wx.Frame.__init__(self, None, -1, "Halter", size = (800,600))
self.panel = wx.Panel (self, -1)
#Variablen die spaeter benoetigt werden
i = 0
blabla = 50
dudududud= 9
self.zaehler = int(i)
self.arrayhoehe ={}
self.arrayod = {}
self.arrayud = {}
self.arraysicherheitsabstand = {}
daff = 590
self.x = float(daff)
self.y = 20
self.zweiterzaehler = int(dudududud)
self.zeichnen = {}
self.dritterzaehler = int (i)
self.size = {}
#Textfelder
#Mittlere Textfelder
self.sicherheitsabstand = wx.StaticText (self.panel, -1, "Sicherheitsabstand:", (225,100))
self.segmenteigenschaft = wx.StaticText (self.panel, -1, "Segmenteigenschaften", (219, 150))
self.segmenteigenschaft.SetForegroundColour('blue')
self.hoehe = wx.StaticText (self.panel, -1, "Hoehe", (287, 175))
self.od = wx.StaticText (self.panel, -1, "Oberer Durchmesser", (220, 200))
self.ud = wx.StaticText (self.panel, -1, "Unterer Durchmesser", (217, 225))
#Linke Textfelder
self.bibliothek = wx.StaticText (self.panel, -1, "Bibliothek:", (20, 500))
self.aktuellebibliothek = wx.StaticText (self.panel, -1, "Hier muss die aktuell geoeffnete Bibliothek stehen", (20,520))
#Eingabefelder
#Mittlere Eingabefelder
self.hoeheeingabe = wx.TextCtrl (self.panel, -1, "0.0", (325, 172), size=(55, -1))
self.odeingabe = wx.TextCtrl (self.panel, -1, "0.0", (325, 197), size=(55, -1))
self.udeingabe = wx.TextCtrl (self.panel, -1, "0.0", (325, 222), size=(55, -1))
self.sicherheitsabstandeingabe = wx.TextCtrl (self.panel, -1, "0.0", (325, 97), size=(55, -1))
#Checkbox
#linke Checkbox
self.kontrolle = wx.CheckBox(self.panel, -1, "Halterkollisionskontrolle verwenden", (20, 20))
#mittlere Checkbox
self.abstand = wx.CheckBox(self.panel, -1, "Halter-Sicherheitsabstand",(225, 70))
#Buttons
#Mittlererbutton
self.neuessegment = wx.Button(self.panel, -1, "Neues Segment", (275, 285))
self.neuessegment.Bind(wx.EVT_BUTTON,self.OnClick)
self.neuessegment.SetDefault()
#Linke Buttons
self.oeffnen = wx.Button(self.panel, -1, "Bibl. oeffnen", (20, 430))
self.neubib = wx.Button(self.panel, -1, "Neue Bibl.", (120, 430))
self.speichern = wx.Button(self.panel, -1, "Bibl. speichern", (20, 465))
self.neuha = wx.Button(self.panel, -1, "Neuer Halter", (120, 465))
#Listbox linke Seite
sampleList = ['halter1','halter2','halter3','halter4','halter5','halter6','halter7','halter8','halter9','halter10',
'halter11','halter12','halter13','halter14','halter15','halter16','halter17','halter18','halter19',
'halter20','halter21','halter21','halter21','halter21','halter21','halter21','halter21','halter21','halter21','halter21','halter21','halter21','halter21','halter21','halter21','halter21','halter21','halter21','halter21','halter21','halter21','halter21','halter21','halter21','halter21','halter21','halter21','halter21','halter21','halter21','halter21','halter21','halter21','halter21','halter21','halter21','halter21','halter21']
listbox = wx.ListBox(self.panel, -1, (20,50), (185, 370), sampleList, wx.LB_SINGLE)
listbox.SetSelection(3)
#Rahmen fuers zeichnen
self.obererrand=wx.StaticText(self.panel, -1, pos=(400, 20), size=(380,1))
self.obererrand.SetBackgroundColour('black')
self.linkerrand =wx.StaticText(self.panel, -1, pos=(400, 20), size=(1,520))
self.linkerrand.SetBackgroundColour('black')
self.rechterrand = wx.StaticText(self.panel, -1, pos=(780, 20), size=(1,520))
self.rechterrand.SetBackgroundColour('black')
self.untererrand = wx.StaticText(self.panel, -1, pos=(400, 540), size=(380,1))
self.untererrand.SetBackgroundColour('black')
#was passiert bei klick auf neues segment
def OnClick(self, event):
self.arrayhoehe[self.zaehler] = float(self.hoeheeingabe.GetValue())
self.arrayod[self.zaehler] = float(self.odeingabe.GetValue())
self.arrayud[self.zaehler] = float(self.udeingabe.GetValue())
self.x = 590
self.x = self.x - self.arrayod[self.zaehler]/2
while self.zweiterzaehler>-1:
self.zeichnen[self.dritterzaehler] = wx.StaticText (self.panel, -1, "", pos=(self.x, self.y), size=(((self.arrayod[self.zaehler]-self.arrayud[self.zaehler])/9)*self.zweiterzaehler+self.arrayud[self.zaehler], self.arrayhoehe[self.zaehler]/10))
self.zeichnen[self.dritterzaehler].SetBackgroundColour('black')
self.zweiterzaehler = self.zweiterzaehler - 1
self.dritterzaehler = self.dritterzaehler + 1
self.y = self.y +self.arrayhoehe[self.zaehler]/10
if self.zweiterzaehler>-1:
self.x = self.x+(self.arrayod[self.zaehler]-self.arrayud[self.zaehler])/18
self.zweiterzaehler = 9
self.size[self.zaehler] = (self.arrayod[self.zaehler]-(self.zweiterzaehler*2*((self.arrayod[self.zaehler]-self.arrayud[self.zaehler])/18)))
self.zaehler = self.zaehler + 1
"""Datei=file("Name.txt","w")
Datei.write("Hallo")
Datei.write("\n")
# \t
Datei.close()"""
if __name__ == '__main__':
app=wx.PySimpleApp()
MyFrame().Show()
app.MainLoop()
Wie man sieht, versuche ich mich auch bereits an der Speicherfunktion, wenn mir die jemand genauer erklären könnte wäre dies auch sehr nett.