Direkt zum Hauptbereich

PSE - Python GUI-App

GitHub: https://github.com/Pulsar7/PSE

Zusammenfassung

Ich bin kein verifizierter Chemiker oder ein anderweitig akademisch Ausgebildeter, der die angegeben Informationen zum Periodensystem verifizieren kann. Die verwendeten Daten werden unten geschildert. Meine Idee zur Visualisierung ist relativ simpel. Zu jedem Element wird ein Button-Element erstellt worin Basisinformationen zum jeweiligen Element angezeigt werden:

  • Ordnungszahl
  • Masse (u)
  • Symbol

Damit das Layout “moderner” aussieht, wollte ich zu Beginn das Modul ttkbootstrap einbinden, was jedoch nicht so geklappt hat, wie ich es mir vorgestellt hatte. Das Periodensystem wird in 11 Serien unterschieden und hierzu werden 11 verschiedene Farben benötigt. Da ich jedoch keinerlei Möglichkeit finden konnte, wie ich Farben zu ttkbootstrap hinzufügen könnte, habe ich das Modul vorerst ausgeschlossen.

Update 1.3

Es wurden mehr Informationen zu jedem einzelnen PSE-Element hinzufügt. Damit die Daten auch sinnvoll gespeichert werden, habe ich sqlite3 eingebunden und die PSE-Daten dort in zwei tables unterteilt: “Elements” & “ElementInfos”.

  1. Elements - Columns:
    • ordnungszahl, symbol, name, masse_u, aggregatzustand, serie
  2. ElementInfos - Columns:
    • ordnungszahl, entdeckung, vorkommen, nebeninfos

Um nicht alle Daten manuell in eine Datenbank schreiben zu müssen, habe ich ein Script geschrieben, dass die JSON-Datei ausliest und diese Daten jeweils in die Datenbank automatisch speichert. Da Informationen, wie das Entdeckungsjahr, noch fehlten, wurden mithilfe von den Python-Modulen requests und BeautifulSoup die jeweiligen Daten aus www.periodensystem.info bezogen.

Update 1.2

Eine Legende wurde nun für eine verbesserte Übersicht hinzugefügt. In den folgenden Versionen werden noch ein paar Funktionen hinzugefügt. Es wurde nun das Modul customtkinter eingebunden, damit das Layout den heutigen Standards angepasst werden kann. Außerdem wurden für eine bessere Übersicht die config.json-Datei in zwei Dateien geteilt: src/pse.json & src/gui_conf.json. Wie in den folgenden Versionen nun Informationen, wie die Entdeckung etc., abspeichern muss noch entschieden werden. Womöglich wird sqlite3 als mobile Datenbank eingebunden und für die GUI-APP soll weiterhin eine .json-Datei ausreichen.

EXE - Stand: Version 1.1

Die EXE-Datei wurde mit dem Python-Modul pyinstaller erstellt: pyinstaller –onefile -w ‘pse.py’. Sie wurde jedoch noch nicht mit einem Windows-Gerät geprüft.


Datenproblem

Beim Notieren der verschiedenen Daten sind mir ein paar Unstimmigkeiten z.B. bezüglich der 7. Periode (Zeile) aufgefallen. Als Beispiel nehme ich das Element Livermorium, oder wie es früher genannt wurde: Ununhexium, mit der Ordnungszahl 116. 1 Während bei periodensystem.info behauptet wird, dass die Serie des Elements nicht bekannt ist 2, behauptet chemie.de, dass es den Metallen zugeschrieben wird. 3 Da “[…] noch keine Kenntnisse über Eigenschaften des Elements und seiner Verbindungen vor[liegen]”4, habe ich mich vorerst für die Serie “Unbekannt” entschieden, da ich keine exakte Aussage darüber finden konnte. 5

Verzeichnis


  1. Askdifference.com, Stand: 31.01.2023↩︎

  2. Periodensystem.info, Stand: 31.01.2023↩︎

  3. Chemie.de, Stand: 31.01.2023↩︎

  4. Lernhelfer.de, Stand: 31.01.2023↩︎

  5. Spektrum.de, Stand: 31.01.2023↩︎

Kommentare

Beliebte Posts aus diesem Blog

Euklidischer Algorithmus in Java

Einleitung Ein bekannter Algorithmus zum Berechnen des größten gemeinsamen Teilers (kurz: ggT), ist der euklidische Algorithmus und in diesem Artikel soll genau dieser Algorithmus in Java nachkonstruiert werden. Main.java Auch dieses Mal wird wieder das String-Array args aus der main -Funktion benutzt um die Benutzeingabe abzufragen. Da dieses Mal keine zusätzlichen Bibliotheken benötigt werden, beginne ich mit gleich mit der Verarbeitung der Benutzeingabe: if (args.length == 2) { char[] first_number = args[0].toCharArray(); char[] second_number = args[1].toCharArray(); if (check_number(first_number) == true) { if (check_number(second_number) == true) {} } } Auch in diesem Code habe ich das String-Array in ein Char-Array umgeformt, damit die einzelnen Character in der chec

Palindrome & Java

Einleitung Zu einen der ersten Projekte, die man beim Lernen von Programmiersprachen programmiert, ist ein "Palindrom-Prüfer". Ein Benutzer soll die Möglichkeit haben ein Wort (oder sogar einen ganzen Satz) einzugeben und dann soll das Programm überprüfen, ob es sich bei der Eingabe um ein Palindrom handelt. Genau das wird im Folgenden mit Java behandelt, nur etwas unnötig kompliziert. Main.java Innerhalb der Main.java -Datei werden nun die nötigen Packete eingebunden: import java.util.HashMap; import java.util.Scanner; // for user-input Dann können wir auch schon die Main-Klasse und die main-Funktion definieren: public class Main { public static void main(String[] args) {} } Der Benutzer soll nun die Möglichkeit haben sein Wort als Parameter in der args