Zeichenprobleme

Plattformunabhängige GUIs mit wxWidgets.
Neutral
User
Beiträge: 6
Registriert: Donnerstag 9. Oktober 2008, 09:03

Zeichenprobleme

Beitragvon Neutral » Donnerstag 9. Oktober 2008, 09:13

Guten Morgen, ich habe ein Problem mit der Zeichenfunktion in wxpython.
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=]
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()[/code]


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.
sea-live
User
Beiträge: 440
Registriert: Montag 18. Februar 2008, 12:24
Wohnort: RP

Beitragvon sea-live » Donnerstag 9. Oktober 2008, 19:17

Servus hast du dir mal die wiki hierzu angeschaut
http://de.wikibooks.org/wiki/Python-Pro ... g:_Dateien
Neutral
User
Beiträge: 6
Registriert: Donnerstag 9. Oktober 2008, 09:03

Beitragvon Neutral » Freitag 10. Oktober 2008, 07:50

Habe ich nicht :oops:
Zu meiner Verteidigung, mein Augenmerk lag auf dem Zeichnen und dem speichern habe ich nur kurz meine Aufmerksamkeit gewidmet, weil ich erstmal das zeichnen zum laufen bringen wollte ;)

Ich schaffe es zwar eine eigenständigen Code zu schreiben, der zum Beispiel nur ein Viereck zeichnet aber ich bin zu dämlich den Befehl DrawLine() im obigen Code zum laufen zu kriegen, so dass der auch auf dem Frame zeichnet, wo die anderen Sachen stehen :/

Aber vielen Dank für die Wiki, ich werd mich wohl erstmal ans speichern setzen nun, anstatt weiter beim zeichnen zu verzweifeln :D

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder