Release 1.2.0: wxPython migration + vacation exclusion
This commit is contained in:
@@ -6,15 +6,15 @@ Native GUI-Lösung mit **wxPython** - funktioniert zuverlässig auf macOS 13.6,
|
||||
|
||||
Nach den Problemen mit BeeWare/Toga (macOS 13.7+ erforderlich) ist wxPython die perfekte Lösung:
|
||||
|
||||
| Feature | Tkinter | BeeWare/Toga | **wxPython** |
|
||||
|---------|---------|--------------|--------------|
|
||||
| Native auf macOS | ❌ | ✅ (nur 13.7+) | ✅ **Alle Versionen** |
|
||||
| Native auf Windows | ❌ | ✅ | ✅ |
|
||||
| Native auf Linux | ❌ | ✅ | ✅ |
|
||||
| Stabilität | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
|
||||
| Look & Feel | Blechig | Modern | **Perfekt nativ** |
|
||||
| macOS 13.6 Support | ✅ | ❌ | ✅ |
|
||||
| Installation | Einfach | Kompliziert | Einfach |
|
||||
| Feature | BeeWare/Toga | **wxPython** |
|
||||
|---------|--------------|--------------|
|
||||
| Native auf macOS | ✅ (nur 13.7+) | ✅ **Alle Versionen** |
|
||||
| Native auf Windows | ✅ | ✅ |
|
||||
| Native auf Linux | ✅ | ✅ |
|
||||
| Stabilität | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
|
||||
| Look & Feel | Modern | **Perfekt nativ** |
|
||||
| macOS 13.6 Support | ❌ | ✅ |
|
||||
| Installation | Kompliziert | Einfach |
|
||||
|
||||
---
|
||||
|
||||
@@ -58,6 +58,7 @@ Die App startet sofort mit **nativen macOS-Widgets**! 🎉
|
||||
|
||||
3. **Exportoptionen**
|
||||
- Checkbox für "Ruhetage ausschließen"
|
||||
- Checkbox für "Urlaub ausschließen (060, 0060)"
|
||||
- Speichert Einstellung persistent
|
||||
|
||||
4. **Konvertierung**
|
||||
@@ -100,6 +101,7 @@ Die App startet sofort mit **nativen macOS-Widgets**! 🎉
|
||||
│ [/Users/sebastian/Documents ] 📁 │ ← Native TextCtrl
|
||||
├─────────────────────────────────────┤
|
||||
│ ☐ Ruhetage ausschließen │ ← Native CheckBox
|
||||
│ ☐ Urlaub ausschließen (060) │ ← Native CheckBox
|
||||
├─────────────────────────────────────┤
|
||||
│ Status: │
|
||||
│ ┌─────────────────────────────────┐ │
|
||||
@@ -115,24 +117,16 @@ Die App startet sofort mit **nativen macOS-Widgets**! 🎉
|
||||
|
||||
---
|
||||
|
||||
## 🔧 Unterschiede zu Tkinter
|
||||
## 🔧 wxPython APIs im Überblick
|
||||
|
||||
### 1. Event Handling
|
||||
```python
|
||||
# Tkinter
|
||||
btn = tk.Button(text="Klick", command=self.on_click)
|
||||
|
||||
# wxPython
|
||||
btn = wx.Button(panel, label="Klick")
|
||||
btn.Bind(wx.EVT_BUTTON, self.on_click)
|
||||
```
|
||||
|
||||
### 2. Layout
|
||||
```python
|
||||
# Tkinter
|
||||
frame.pack(fill=tk.BOTH, expand=True)
|
||||
|
||||
# wxPython
|
||||
sizer = wx.BoxSizer(wx.VERTICAL)
|
||||
sizer.Add(widget, 1, wx.EXPAND)
|
||||
panel.SetSizer(sizer)
|
||||
@@ -140,19 +134,11 @@ panel.SetSizer(sizer)
|
||||
|
||||
### 3. Threading + UI
|
||||
```python
|
||||
# Tkinter
|
||||
self.log_text.insert(tk.END, "Message\n")
|
||||
|
||||
# wxPython
|
||||
wx.CallAfter(self.log_text.AppendText, "Message\n")
|
||||
```
|
||||
|
||||
### 4. Dialog
|
||||
```python
|
||||
# Tkinter
|
||||
filedialog.askopenfilenames(...)
|
||||
|
||||
# wxPython
|
||||
with wx.FileDialog(...) as dialog:
|
||||
if dialog.ShowModal() == wx.ID_CANCEL:
|
||||
return
|
||||
@@ -177,7 +163,7 @@ self.pdf_listbox = wx.ListBox(panel, style=wx.LB_EXTENDED)
|
||||
```
|
||||
|
||||
### ✅ Bessere Performance
|
||||
- Schnellere Rendering als Tkinter
|
||||
- Schnelle native Darstellung
|
||||
- Native Controls = weniger CPU
|
||||
|
||||
### ✅ Moderne Features
|
||||
@@ -211,6 +197,7 @@ python3 gui_wxpython.py
|
||||
- [ ] "Alle entfernen" funktioniert
|
||||
- [ ] "Durchsuchen" für Ausgabe-Verzeichnis funktioniert
|
||||
- [ ] Checkbox "Ruhetage" funktioniert
|
||||
- [ ] Checkbox "Urlaub ausschließen (060)" funktioniert
|
||||
- [ ] "ICS Datei erstellen" startet Konvertierung
|
||||
- [ ] Log zeigt Status in Echtzeit
|
||||
- [ ] Nach Konvertierung: Erfolgs-Dialog
|
||||
@@ -220,7 +207,7 @@ python3 gui_wxpython.py
|
||||
|
||||
---
|
||||
|
||||
## 📈 Migration von Tkinter
|
||||
## 📈 Migration auf wxPython
|
||||
|
||||
### Was blieb gleich:
|
||||
- Threading-Logik
|
||||
@@ -236,25 +223,22 @@ python3 gui_wxpython.py
|
||||
- ✅ Native Dialoge (About, File, Directory)
|
||||
- ✅ Thread-sicheres UI-Update mit `wx.CallAfter`
|
||||
|
||||
### Status
|
||||
- ✅ GUI-Start erfolgt über `start_gui.sh` / `start_gui.cmd`
|
||||
- ✅ GUI-Einstiegspunkt ist `gui_wxpython.py`
|
||||
|
||||
---
|
||||
|
||||
## 🚀 Nächste Schritte (optional)
|
||||
|
||||
### 1. Ersetzt Tkinter vollständig
|
||||
Wenn wxPython gut funktioniert, können wir:
|
||||
```bash
|
||||
mv gui.py gui_tkinter_old.py
|
||||
mv gui_wxpython.py gui.py
|
||||
```
|
||||
|
||||
### 2. Packaging mit PyInstaller
|
||||
### 1. Packaging mit PyInstaller
|
||||
```bash
|
||||
pip install pyinstaller
|
||||
pyinstaller --onefile --windowed gui_wxpython.py
|
||||
```
|
||||
→ Erstellt `.app` Bundle für macOS!
|
||||
|
||||
### 3. Weitere Features
|
||||
### 2. Weitere Features
|
||||
- Icon hinzufügen
|
||||
- Statusbar mit Progress
|
||||
- Toolbar mit Icons
|
||||
@@ -263,19 +247,18 @@ pyinstaller --onefile --windowed gui_wxpython.py
|
||||
|
||||
---
|
||||
|
||||
## 🆚 Vergleich: Tkinter vs wxPython
|
||||
## 🆚 Plattformstatus
|
||||
|
||||
| Kriterium | Tkinter | wxPython |
|
||||
|-----------|---------|----------|
|
||||
| **Look auf macOS** | ❌ Alt/blechig | ✅ **Perfekt nativ** |
|
||||
| **Menüleiste** | ⚠️ Popup-Menü | ✅ **Native MenuBar** |
|
||||
| **File Dialoge** | ⚠️ Ok | ✅ **Perfekt nativ** |
|
||||
| **Thread-Safety** | ⚠️ Kompliziert | ✅ **wx.CallAfter** |
|
||||
| **Installation** | ✅ Built-in | ⚠️ Pip install |
|
||||
| **Bundle-Größe** | ✅ Klein | ⚠️ Größer (~20MB) |
|
||||
| **Entwicklungszeit** | ✅ Schnell | ⚠️ Etwas länger |
|
||||
| **macOS 13.6 Support** | ✅ Ja | ✅ **Ja!** |
|
||||
| **Dark Mode** | ❌ | ✅ **Automatisch** |
|
||||
| Kriterium | wxPython |
|
||||
|-----------|----------|
|
||||
| **Look auf macOS** | ✅ **Perfekt nativ** |
|
||||
| **Menüleiste** | ✅ **Native MenuBar** |
|
||||
| **File Dialoge** | ✅ **Perfekt nativ** |
|
||||
| **Thread-Safety** | ✅ **wx.CallAfter** |
|
||||
| **Installation** | ⚠️ Pip install |
|
||||
| **Bundle-Größe** | ⚠️ Größer (~20MB) |
|
||||
| **macOS 13.6 Support** | ✅ **Ja!** |
|
||||
| **Dark Mode** | ✅ **Automatisch** |
|
||||
|
||||
---
|
||||
|
||||
@@ -296,7 +279,7 @@ pyinstaller --onefile --windowed gui_wxpython.py
|
||||
2. ✅ Perfekter nativer Look & Feel
|
||||
3. ✅ Keine Versionskonflikte
|
||||
4. ✅ Stabil und production-ready
|
||||
5. ✅ Einfache Migration von Tkinter
|
||||
5. ✅ Einheitlicher GUI-Stack mit wxPython
|
||||
6. ✅ Alle Features vollständig implementiert
|
||||
|
||||
**Status:** 🎉 **PRODUCTION READY!**
|
||||
|
||||
Reference in New Issue
Block a user