• Herzlich willkommen!

    Das Team von »Doctor Brick« heißt Euch herzlich willkommen und wünscht Euch viel Spaß hier!
    »Doctor Brick« ist eine anerkannte Community (RLOC) für erwachsene LEGO Enthusiasten, auch AFOLs (= Adult Fans Of LEGO) genannt.
    Wir können uns hier über alle Belange des LEGO Hobbys austauschen wie z.B. Set- und Teilefragen, Vorstellung und Rezensionen von Legobauten.
    Bitte beachtet die Nutzungsbedingungen und den Verhaltensleitfaden.

Pybricks mit GUI ?

Lok24

Elektronikbahner
Registriert
11 Sep. 2019
Beiträge
1.451
Hallo zusammen,

hier eine kleine Idee zu Pybricks.

Ich schreibe immer mal kurze Programme, da sind mir zwei Dinge aufgefallen:
  • Das Anpassen irgendwelcher Parameter ist doch eher fummelig und erklärungsbedürftig
  • Man kann keine eigenen Programmschnipsel als fertige Routinen in mehreren Programmen verwenden, also das was man bei Python via from xxx import yyyy nutzt
Meine Programme folgen der immer gleichen Struktur:

# Parameter -----------------------------------------------

dirMotorA = 1 # Direction 1 or -1
dirMotorB = 1 # Direction 1 or -1
autoacc = False # accelarate continously when holding button

# Funktion -----------------------------------------------

def function():
# Alles was die eigentliche Funktion genau dieses Programms ausmacht

# generelle/allgemeine Funktionen -----------------------------------------------

def CheckButton(x):
class delay:
def drive():
def portcheck(i):

#define globals
# initialize Programm
# main loop

while True:
function()
wait(10)

Schön wäre es also wenn man irgendwas hätte was das alles zusammenbaut.

Eine Excel-macro das:

Die Textfile „meinProg.src“ liest,
vorne die Parameter schreibt
Die Textfile „meinProg“ liest und anhängt
Die ausgewählten allgemeinen Funktion einhängt
Und die fertige Datei „meinProg.py“ ausgibt

Ergäbe das irgendeinen Sinn / Mehrwert?Zwischenablage02.jpg
 

Gimmick

Stammuser
Registriert
1 Okt. 2018
Beiträge
358
Ja, hätte schon Mehrwert, ich weiß aber nicht, ob Excel da der richtige weg ist - muss man ja erst mal Excel haben...
 

Ts__

Eisenbahner
Registriert
6 Jan. 2016
Beiträge
2.549
Ort
Zwickau / Sachsen
Ich will ja keinen bremsen, aber ob man das unbedingt braucht?
Ja, es soll die Einstiegshürde verringern, aber macht es das wirklich?

Ich denke, das Excel-Sript erstellt am Ende eine .py Datei wo die Parameter eingetragen sind. Diese Datei muss ja dann auch in die PyBricks Weboberfläche eingefügt werden, um dann auf den Hub aufgespielt zu werden.

Da kann man doch auch gleich die Parameter dort wie von Werner vorgesehen ändern. Die Hauptabschreckung dürfte doch das Flashen der Hubs sein, also dem aufspielen der PyBricks Firmware.
Dieser Prozess ging noch nie schief bei mir, aber er ist umständlich zu starten und beim Technik-Hub hatte ich letztes immer mehrere Versuche gebraucht, bis das Timming stimmte.
Dieser Prozess schreckt doch sicher mehr ab, als eine Zahl in einen kommentierten Bereich am Programmanfang zu ändern.

Ich möchte jetzt nicht der MiesePeter sein, ist nur meine Meinung und hat natürlich keinerlei Relevanz für andere Meinungen.

Thomas
 

Lok24

Elektronikbahner
Registriert
11 Sep. 2019
Beiträge
1.451
Moin,

ok, ich hab's falsch angepackt :fngrcrssd:
Die GUI ist eigentlich nicht der Punkt, sondern das man fertige Routinen einfach einbinden kann.
 

Ts__

Eisenbahner
Registriert
6 Jan. 2016
Beiträge
2.549
Ort
Zwickau / Sachsen
Ups. Ich dachte es ging um das Parameter ändern ;-)

Ok, vielleicht sollte ich mal abwarten, was genau entsteht.

;-)

Thomas
 

grawuli

Urgestein
Registriert
2 Mai 2018
Beiträge
1.229
Ort
Minga
Hallo Werner,

die Idee als solches finde ich gut.

Eine GUI macht aber nur Sinn, wenn Du das fertige Programm auch sofort auf den Hub überträgst.

Codeschnipsel, die dann wieder kopiert werden müssen ist auch nicht der Brüller.

Der Weg über Excel ist nicht wirklich sinnvoll, damit schließt Du alle aus, die nicht Excel haben > Alternative > GUI mit tkinter (Python)

Aber lass dich nicht bremsen. Vielleicht lesen/schreiben wir ja nur aneinander vorbei.
 

Lok24

Elektronikbahner
Registriert
11 Sep. 2019
Beiträge
1.451
@all Alles gut, danke für den Input.

Lassen wir also die GUI-Idee mal weg, die wendet sich an "Endkunden"

Bleibt die zweite Sache, die sich an "Entwickler" wendet: wie kann man "Routinen" weiterverwenden?
Also ich habe eine Datei Checkbutton.txt, ein Stück python-code das irgendwas macht.
Brauche ich in vielen Programmen.
Und davon habe ich einige.
Andere haben andere, die ich auch nutzen könnte. Ein Art Pool, Bibliothek.

Wie bekomme ich die zu einem neuen Pybricks-Programm "myprog" hinzu?
Doch nur indem ich die Quellcodes zusammenkopiere mit irgendeinem Tool, das einfach stumpf fünf Textfiles zusammenbastelt.
Aber doch besser als immer irgendwo lesen, kopieren, einfügen - dachte ich.
 

Gimmick

Stammuser
Registriert
1 Okt. 2018
Beiträge
358
Da man in pybricks wohl kaum eigene libraries einbinden kann, bleibt wohl nur: Einfach immer reinkopieren oder aus Text-Fragmenten zusammenbauen.
 

grawuli

Urgestein
Registriert
2 Mai 2018
Beiträge
1.229
Ort
Minga
Hallo Werner,

Du solltest die GUI noch um ein Feld für Kommentare erweitern und in den Header der Ausgabedatei schreiben.

Irgendwann verliert auch der Ordentlichste den Überblick.
 

gatewalker

Urgestein
Registriert
7 Okt. 2018
Beiträge
1.766
Ort
Niederösterreich Bezirk Zwettl
@Lok24 was du eigentlich möchtest sind selbst erstellte funktionsblöcke in die pybricks Oberfläche integrieren und dann dann nur noch die Parameter anpassen.
Das wäre wohl noch am ehesten als Anfrage an das pybricks Team möglich das dann (um einen Account zwang zu umgehen) eine local Datei/Datenbank ausliest und integriert oder über ein Browseraddon dass dann in die pybricks Oberfläche passenden Buttons/Menüs einbaut (ebenfalls mit lokaler Datei/Datenbank)
Den Weg über Excel würde ich auch nicht nehmen da es nicht alle haben und man eigentlich immer weiter von Grundgedanken wegkommt. Da kann man dann auch bei der lego Software bleiben.
 

Lok24

Elektronikbahner
Registriert
11 Sep. 2019
Beiträge
1.451
Hallo Georg,

was du eigentlich möchtest sind selbst erstellte funktionsblöcke in die pybricks Oberfläche integrieren und dann dann nur noch die Parameter anpassen.
ganz bestimmt nicht :)

Das wäre wohl noch am ehesten als Anfrage an das pybricks Team
Alle Anfragen dort wurden dort bereits abschlägig beschieden, zurecht, auch mit dem Hinweis auf pybricksdev.
Wer mag kann das nutzen, und für mich brauche ich kein "Tool".
 

Gimmick

Stammuser
Registriert
1 Okt. 2018
Beiträge
358
@Lok24
Das 'Problem' bzw. die Umständlichkeit ist eher, dass GUIs in python erstellen nix taugt und code-Verwaltung von Hand oft darauf hinausläuft mit irgendwelchen Strings zu jonglieren.

Wenn man die ganzen Codes in ein Interface überführen möchte, kann man das schon so machen, dass man sich eine Nomenklatur für die Parameterwerte ausdenkt und die Codes dann danach abgrast - "@Typ#Name" zum Beispiel.
Dann erstellt man sich ein einfaches Object aus Typ, Name, Program-Name und Value und kann so für jede Variable automatisch in Control im Interface anlegen. Das Control übergibt dann einen Eingabe-Wert in Value und beim Speichern klappert man die Objekte über eine Schleife ab und ersetzt in den Dateien den "@Typ#Name" String mit dem Objekt-Wert.

Wenn man sich dann an die Bezeichnungen hält, funktioniert das zukündftig automatisch für jede Variable - sofern sie zu den Grundobjekten gehört (int, double, float, string,...)
 

Lok24

Elektronikbahner
Registriert
11 Sep. 2019
Beiträge
1.451
Aloha, danke für die rege Beteiligung und die nachhaltige Ablehnung von Excel :facepalm:

hier mal zur Verdeutlichung ein einfaches Programm
Python:
#$include imports

vmax = 30
dirMotorA = 1     
START = "B+"
STOP = "B0"

def function():
    if CheckButton(STOP):
        drive(0)
    if CheckButton(START):
        drive(vmax)
 
#$include CheckButton
#$include delay
#$include portcheck
#$include drive
#define globals
v = 0
vold = 0
#$include initaialize
#$include mainloop

wenn das durch mein kleines Script läuft werden die #$include durch die passende .txt Datei ersetzt, das ist schon alles.
Parameter erkenne ich:
Stelle 1 alpha
solange bis Stelle 1-4 == "def "
That's all.
 
Zuletzt bearbeitet:
Oben