Es geht um die Verwendung des .NET Framework in Ironpython.
Es geht um den folgenden Code:
Code: Alles auswählen
# -*- coding: utf-8 -*-
import clr
clr.AddReference("System.Drawing")
clr.AddReference("System.Windows.Forms")
from System.Windows.Forms import Application, Form, Button, Label, Screen, TextBox, AnchorStyles, DialogResult, AnchorStyles
from System.Drawing import ContentAlignment, Point
class Zeichnen():
'''oProject = oDesktop.NewProject()
oProject.InsertDesign("Maxwell 2D", "TestDesign", "Magnetostatic", "")
oProject.Rename("MyProject", True)
oProject = oDesktop.SetActiveProject("MyProject")
oDesign = oProject.SetActiveDesign("TestDesign")'''
def Init(*args):
# qs,gfd = args
field = 13
R_outer_SY = RoS #<-----Hier sollen die ausgelesenen Werte Übergeben werden z.B. RoS
R_inner_SY = 80.85
R_outer_RY = 80
GGap = R_inner_SY - R_outer_RY
Slot_Height = 23.3182
Top_Diameter = 7.75
Slot_Opening = 3.0837
Fillet_Tooth_Tip = 0.319
Fillet_Tooth_Inner = 0.319
Slot_Opening_Angle = 10.6335
Tooth_Tip_Height = 0.82303
Shaft_Radius = 24
Stator_Slots = 48
#Klasse für die Auswahl der Eingabemethode
class Auswahl(Form):
def __init__(self):
creenSize = Screen.GetWorkingArea(self)
FORMheight = 320
FORMwidth = 480
self.Text = 'Eingabeformat'
self.Height = FORMheight
self.Width = FORMwidth
label = Label(Top = 30, Left = 50, Height = 100, Width = 250)
label.Text = '''Bitte auswählen:
Parameterbasiert: Eingabe über Parameter.
Manuell: Eingabe für jede Nut einzeln.'''
param_button = Button(Text = "Parameterbasiert", Width = 200, Top = FORMheight - 150, Left = (FORMwidth / 2) - 100)
manu_button = Button(Text = "Manuell", Width = 200, Top = FORMheight - 100, Left = (FORMwidth / 2) - 100)
beenden_button = Button(Text = "Beenden", Top = 260, Left = 390)
param_button.Click += self.OnClickParam
manu_button.Click += self.OnClickManu
beenden_button.Click += self.OnClickBeenden
self.Controls.Add(label)
self.Controls.Add(param_button)
self.Controls.Add(manu_button)
self.Controls.Add(beenden_button)
def OnClickParam(self, *args):
Param = ParamDialog()
if Param.ShowDialog() == DialogResult.OK:
#Zeichnen.Init()
RoS = Param.RoS_Textbox.Text #<----- Hier das Problem
self.Close()
def OnClickManu(self, *args):
Manu = ManuDialog()
Manu.ShowDialog()
def OnClickBeenden(self, *args):
self.Close()
#Klasse für die Eingabe über Parameter
class ParamDialog(Form):
def __init__(self):
self.Text ='Parameterbasiert'
self.Height = 400
self.Width = 600
ueberschrift_label = Label(Text = "Bitte eingeben:", Top=10, Left=30)
eingabe_label = Label(AutoSize = False, Top = 30, Height = 200, Width = 200, TextAlign = ContentAlignment.TopRight)
eingabe_label.Text='''Außendurchmesser Stator, RoS(mm):
Innendurchmesser Stator, RiS(mm):
Stator Nutzahl, Qs:
Polpaarzahl, p:
Reihenwindungszahl, zQ:
Schrittweite, y:
Anzahl Schichten:'''
RoS_Textbox = TextBox(Top = 27, Left = 200, Width = 150)
RiS_Textbox = TextBox(Top = 52, Left = 200, Width = 150)
Qs_Textbox = TextBox(Top = 77, Left = 200, Width = 150)
p_Textbox = TextBox(Top = 102, Left = 200, Width = 150)
zQ_Textbox = TextBox(Top = 127, Left = 200, Width = 150)
y_Textbox = TextBox(Top = 152, Left = 200, Width = 150)
schicht_Textbox = TextBox(Top = 177, Left = 200, Width = 150)
eingabe_button = Button(Text = "Eingabe beenden", Width = 120, Location = Point(200, 210))
zurueck_button = Button(Text = "zurück", Width = 120, Location = Point(200,240))
#bestaetigen_button = Button(Text = "bestätigen", Location = Point(355,175))
self.Controls.Add(eingabe_label)
self.Controls.Add(ueberschrift_label)
self.Controls.Add(RoS_Textbox)
self.Controls.Add(RiS_Textbox)
self.Controls.Add(Qs_Textbox)
self.Controls.Add(p_Textbox)
self.Controls.Add(zQ_Textbox)
self.Controls.Add(y_Textbox)
self.Controls.Add(schicht_Textbox)
self.Controls.Add(eingabe_button)
self.Controls.Add(zurueck_button)
#self.Controls.Add(bestaetigen_button)
zurueck_button.Click += self.OnClickZurueck
eingabe_button.Click += self.OnClickEingabe
#bestaetigen_button.Click += self.OnClickBestaetigen
def OnClickZurueck(self, *args):
self.Close()
def OnClickEingabe(self, *args):
self.DialogResult = DialogResult.OK
RoS = form1.RoS_Textbox.Text
self.Close()
Application.EnableVisualStyles()
form1 = Auswahl()
Application.Run(form1)
Nach drücken des eingabe_button, soll die Form geschlossen werden(geht) und dann sollen die Werte aus den TextBoxes ausgelesen werden und in Variablen gespeichert werden(z.B. RoS_Textbox, geht nocht nicht

Des Weiteren sollen diese ausgelesenen Variablen dann an die Klasse zeichnen übergeben werden.
Wahrscheinlich ist das Problem recht einfach zu lösen, aber OOP mit Python hab ich noch nicht so viel gemacht, habe nur mal einen C# Kurs besucht.
Vielen Dank für eure Hilfe.
