Kreis aus Radiobuttons

Fragen zu Tkinter.
Antworten
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

So wie ich das sehe mischst du doch wild RAD mit DEG. Wenn dein z1 in RAD ist, musst du im range auch bis 2*PI gehen. Oder einfacher (IMHO) ganzzahlig schreiten (15 Grad / Schritt ist ja ganzzahlig), und *danach* in RAD konvertieren.
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Gewoehn dir mal an die Code-Boxen fuer Python-Code zu benutzen, so ist es schwierig, deinen Code zu verwenden.

Und ein paar prints einzustreuen um sich die Werte von Variablen anzuschauen ist eine einfache Uebung, die du ebenfalls exerzieren solltest.

Dann sieht man den Fehler: statt 2PI / 24 rechnest du 24 / 2PI...

Code: Alles auswählen

import numpy as np
import math

r = 100
z1 = (2*math.pi) / 24
print(z1)

for i in np.arange(0,math.pi*2,z1):
    x = math.cos(i)*r
    y = math.sin(i)*r
    print(x, y)
Sirius3
User
Beiträge: 18294
Registriert: Sonntag 21. Oktober 2012, 17:20

@Philipp68: Du willst ja auch nicht 24 in 2pi-Stücke teilen, sondern 2pi in 24 Stücke. Dazu ist aber linspace besser geeignet: np.linspace(0, 2*np.pi, 24, endpoint=False).
BlackJack

@Philipp68: Du musst allen `Radiobutton`\s die zusammengehören das selbe Exemplar von einer Unterklasse von `tkinter.Variable` per `variable`-Argument übergeben. Also beispielsweise ein Exemplar von `tkinter.IntVar` wenn das die Zahlen 1 bis 24 aufnehmen soll.

Dein `i` hat allerdings nicht die Werte 1 bis 24. Deswegen ist `i` auch nicht wirklich ein guter Name dafür. Da erwarten die meisten Leser, insbesondere auch als Laufvariable in einer Schleife nur ganze Zahlen. Einbuchstabige Namen sind sowieso oft nicht wirklich gut verständlich. Nenne das `i` mal in `angle` oder um, dann weiss man was der Wert bedeutet.

Und dann kannst Du Dir mit `enumerate()` eine zusätzliche laufende Zahl zu dem Winkelwert erzeugen lassen.
Antworten