Datenübergabe mit Listbox und grid
OK Nobuddy
Habe dein Skrip ein wenig bereinigt und ausfürbar gemacht. Als nächstes muss du ein Frame welches die Eingabezeilen (Entries) enthält auf die Canvas bringen. Ein Tip ist:Hier noch die scrollable Canvas Skript:
Gruß wuf
Habe dein Skrip ein wenig bereinigt und ausfürbar gemacht. Als nächstes muss du ein Frame welches die Eingabezeilen (Entries) enthält auf die Canvas bringen. Ein Tip ist:
Code: Alles auswählen
canvas.create_window(0, 0, window=entry_frame, anchor='nw')
Code: Alles auswählen
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import sys
try:
#~~ For Python 2.x
import Tkinter as tk
except ImportError:
#~~ For Python 3.x
import tkinter as tk
CONFIG = {
'back_ground' : 'orange',
'canvas_width' : 300,
'canvas_height' : 300,
}
class SrollableCanvas(tk.Canvas):
def __init__(self, parent, conf):
self.parent = parent
self.conf = conf
tk.Canvas.__init__(self, self.parent,
scrollregion=(0, 0, 300, 1500),
bg=self.conf['back_ground'],
width=self.conf['canvas_width'],
height=self.conf['canvas_height'],
bd=0,
highlightthickness=0)
self.grid(column=0, row=0)
self.yscrollbar = tk.Scrollbar(self.parent, width=12,
troughcolor='gray')
self.yscrollbar.grid(column=1, row=0, sticky='ns')
self.yscrollbar.config(command=self.yview)
self.config(yscrollcommand=self.yscrollbar.set)
self.create_line(0, 0, 300, 1500, width=4, fill='red')
app_win = tk.Tk()
app_win.title('Scrollable canvas')
app_win.geometry('+20+20')
main_frame = tk.Frame(app_win)
main_frame.pack()
SrollableCanvas(main_frame, CONFIG)
app_win.mainloop()
Take it easy Mates!
Hallo zusammen
Als erstes habe ich die Variante von yipyip in den bestehenden Code integriert.
yipyip, Danke dafür!
Dabei habe ich noch in einem Thread von wuf, das ermitteln des Fullscreen entdeckt, was ich auch eingebaut habe.
Das ist sinnvoll, wenn die Fenstergrößen ein Maximum benötigen und der Benutzer nicht die Fenstergröße seines Fullscreen kennt.
Manchmal wird die Größe des Fullscreen auch nicht benötigt, da wäre es dann geschickt die Größe des aktuellen Bedarfs zu verwenden. Nur wie man das auf die Reihe bekommt, beide Optionen miteinander zu vereinen, da bin ich noch nichts dahinter gekommen.
Ist so etwas möglich?
Hier jetzt mal yipyipś Variante: https://gist.github.com/3972548
wuf, als nächstes werde ich mich mit Deiner Variante beschäftigen.
Melde mich dann wieder!
Grüße Nobuddy
Nachtrag:
Habe in der Ausgabe von gist.gihub in CONFIG, ''width' : 100' entfernt und dafür in der self.conf ein Update durchgeführt.
Als erstes habe ich die Variante von yipyip in den bestehenden Code integriert.
yipyip, Danke dafür!
Dabei habe ich noch in einem Thread von wuf, das ermitteln des Fullscreen entdeckt, was ich auch eingebaut habe.
Das ist sinnvoll, wenn die Fenstergrößen ein Maximum benötigen und der Benutzer nicht die Fenstergröße seines Fullscreen kennt.
Manchmal wird die Größe des Fullscreen auch nicht benötigt, da wäre es dann geschickt die Größe des aktuellen Bedarfs zu verwenden. Nur wie man das auf die Reihe bekommt, beide Optionen miteinander zu vereinen, da bin ich noch nichts dahinter gekommen.
Ist so etwas möglich?
Hier jetzt mal yipyipś Variante: https://gist.github.com/3972548
wuf, als nächstes werde ich mich mit Deiner Variante beschäftigen.
Melde mich dann wieder!
Grüße Nobuddy
Nachtrag:
Habe in der Ausgabe von gist.gihub in CONFIG, ''width' : 100' entfernt und dafür in der self.conf ein Update durchgeführt.
Code: Alles auswählen
CONFIG = {'title' : "Anlage Neukunden",
'font': ('NimbusSansL', 14, 'bold'),
'font_color': 'black',
'back_ground' : 'orange',
'select_mode': 'single'}
DEFAULT_LABELS = ['Kundenkreis', 'Namen', 'Zusatz', 'Straße, Nr.', 'PLZ',
'Ort', 'USt-Ident-Nr.', 'Ansprechpartner', 'Telefon', 'Handy',
'Fax', 'Mail','Internetseite']
LISTBOX_ITEMS = {'0' : 'Privatkunde',
'1' : 'Kleinbetrieb, bis 1000 € Jahresumsatz',
'2' : 'Mittelständischer Betrieb, bis 10.000 € Jahresumsatz',
'3' : 'Großbetrieb, bis 25.000 € Jahresumsatz',
'4' : 'Konzern, ab 25.000 € Jahresumsatz',
'5' : 'Komunaler Träger'}
class ListGui(object):
def __init__(self, controller, items, conf):
self.root = tk.Tk()
xpos = 0
ypos = 0
screenx = self.root.winfo_screenwidth()
screeny = self.root.winfo_screenheight()
self.root.geometry("%dx%d+%d+%d" % (screenx, screeny, xpos, ypos))
self.root.title(conf['title'])
self.controller = controller
self.conf = conf
self.conf.update({'width' : screenx})
Moeglich ist bei der Konfiguration (fast) alles.
Simple Logik: Sind in der Konfiguration gueltige Werte, werde diese genommen, ansonsten Fullscreen.
Beispiel: Steht in der Config z.B. width=0, dann wird auf Fullscreen gesetzt, stehen
dort Werte > 0 fuer width und height, werden diese uebernommen.
yipyip
Simple Logik: Sind in der Konfiguration gueltige Werte, werde diese genommen, ansonsten Fullscreen.
Beispiel: Steht in der Config z.B. width=0, dann wird auf Fullscreen gesetzt, stehen
dort Werte > 0 fuer width und height, werden diese uebernommen.
yipyip
Danke für die Info yipyip!
Habe im Bereich der Fensterhöhe, das Ganze noch etwas optimiert.
https://gist.github.com/3975466
Hoffe, daß es von der Umsetzung so ok ist.
An dieser Stelle, einen Herzlichen Dank an wuf und yipyip!
Grüße Nobuddy
Habe im Bereich der Fensterhöhe, das Ganze noch etwas optimiert.
https://gist.github.com/3975466
Hoffe, daß es von der Umsetzung so ok ist.
An dieser Stelle, einen Herzlichen Dank an wuf und yipyip!
Grüße Nobuddy
geo_check: Der Controller sollte nichts ueber die Innereien von Tkinter wissen. Mach die ganzen geo-Sachen im View, also in der ListGui Klasse. (Eventuell gesteuert von den Config Daten)
Das mit dem 'global geoxy' gehoert besser geloest. (also ohne global)
Statt:
reicht auch ein
yipyip
Das mit dem 'global geoxy' gehoert besser geloest. (also ohne global)
Statt:
Code: Alles auswählen
return (sum([i for i in geoxy]))
Code: Alles auswählen
return sum(geoxy)
yipyip
Hast ja völlig Recht, das geht wirklich wesentlich einfacher.
Habe alles bereinigt, auch in der Class Controller.
Hier die aktuelle gist.github: https://gist.github.com/3979267
Danke für die Info!
Grüße Nobuddy
Habe alles bereinigt, auch in der Class Controller.
Hier die aktuelle gist.github: https://gist.github.com/3979267
Danke für die Info!
Grüße Nobuddy
Hi Nobuddy
No problem. Du musst folgende Ergänzungen durchführen:
Diese Methoden nach der Methode 'run' in Klasse 'ListGui' einfügen:
Probier es einmal aus. Vielleicht funktioniert es.
Gruß wuf
No problem. Du musst folgende Ergänzungen durchführen:
Code: Alles auswählen
canvas.config(yscrollcommand=yscroll.set)
scroll_frame.grid_rowconfigure(0, weight=1)
# Hier neu hinzufügen
self.canvas = canvas
self.bind_scroll(yscroll, self.y_scroll)
Code: Alles auswählen
def bind_scroll(self, widget, mode):
#~~ Windows
widget.bind("<MouseWheel>", mode)
#~~ Linux
widget.bind("<Button-4>", mode)
widget.bind("<Button-5>", mode)
def y_scroll(self, event):
if event.num == 5 or event.delta < 0:
self.canvas.yview_scroll(1, "unit")
elif event.num == 4 or event.delta > 0:
self.canvas.yview_scroll(-1, "unit")
Gruß wuf
Take it easy Mates!
Hallo zusammen
Habe eine kleine Änderung im bestehenden Code vorgenommen.
Ich habe die LISTBOX_ITEMS oben heraus genommen und übergebe dies nun von einem anderen Modul aus.Die Class Controller, habe ich so entsprechend angepasst:
Wenn ich nun aus der Listbox eine Zeile auswähle, wird diese nicht in der Scrollliste ausgegeben.
Hier der komplette Code: https://gist.github.com/4030749
Ich hoffe, Ihr könnt mir da weiter helfen, warum dies nicht funktioniert?
Grüße Nobuddy
Habe eine kleine Änderung im bestehenden Code vorgenommen.
Ich habe die LISTBOX_ITEMS oben heraus genommen und übergebe dies nun von einem anderen Modul aus.
Code: Alles auswählen
LISTBOX_ITEMS = {'0' : 'Privatkunde',
'1' : 'Kleinbetrieb, bis 1000 € Jahresumsatz',
'2' : 'Mittelständischer Betrieb, bis 10.000 € Jahresumsatz',
'3' : 'Großbetrieb, bis 25.000 € Jahresumsatz',
'4' : 'Konzern, ab 25.000 € Jahresumsatz',
'5' : 'Komunaler Träger'}
from gui_KundenNeu import Controller
Controller(LISTBOX_ITEMS)
Code: Alles auswählen
class Controller(object):
def __init__(self, LISTBOX_ITEMS):
self.model = Model(LISTBOX_ITEMS)
self.view = ListGui(self, self.model.items, CONFIG)
def process(self, listbox_item):
self.view.entry_vars[0].set(listbox_item)
print(listbox_item)
def collect_entries(self):
entry_data = dict()
for index, entry_var in enumerate(self.view.entry_vars):
print("{} : {}".format(self.model.items[index],
entry_var.get()))
entry_data[self.model.items[index]] = entry_var.get()
print()
print(entry_data)
def run(self):
self.view.run()
class Model(object):
def __init__(self, items):
self.items = items
def main():
Controller(LISTBOX_ITEMS).run()
Hier der komplette Code: https://gist.github.com/4030749
Ich hoffe, Ihr könnt mir da weiter helfen, warum dies nicht funktioniert?
Grüße Nobuddy
Ich habe weitere Änderungen vorgenommen, so daß alles funktionieren sollte (was aber nicht der Fall ist).
Die Auswahl an der Listbox wird an die Entry-Liste übergeben.
In der Entry-Liste selbst ist aber kein Eintrag.
Das komische ist, daß wenn ich den Button 'Übernahme' betätige, wird die Auswahl von der Listbox in der Ausgabe der Entry_Liste mit ausgegeben. Die Eingabe, die ich in der Entry-Liste vorgenommen haben, fehlen aber!
Hier der aktuelle Code: https://gist.github.com/4033430
Die Auswahl an der Listbox wird an die Entry-Liste übergeben.
In der Entry-Liste selbst ist aber kein Eintrag.
Das komische ist, daß wenn ich den Button 'Übernahme' betätige, wird die Auswahl von der Listbox in der Ausgabe der Entry_Liste mit ausgegeben. Die Eingabe, die ich in der Entry-Liste vorgenommen haben, fehlen aber!
Hier der aktuelle Code: https://gist.github.com/4033430
Hi Nobuddy
Für deine letzten Modifikation nehme ich Bezug auf:
https://gist.github.com/4033430
Ich bezeichne diese als Moduldatei (deine Namengebung 'gui_KundenNeu.py') In dieser Datei befinden sich die Kofigurationliste CONFIG, und die folgenden Klassen:
ListGui
Controller
Model
Hier würde ich die Methode process in Klasse Controller wie folgt abändern:
Meine Frage. Warum schreibst du in der folgenden Zeile die Parameternamen in Grossbuchstaben (wie Konstanten)?:
Ich nehme an die Datei (Name noch unbekannt) in welcher du die Moduldatei gui_KundenNeu importierst sieht in der Zwischenzeit wie folgt aus:
Habe die Zeilen deines vorletzten Post von:
auf
abgeändert. Kannst du das Ganze einmal ausprobieren? Bei mir funktioniert die Ausgabe die mittels Schaltfläche Übernehmen ausgelöst wird.
Gruß wuf
Für deine letzten Modifikation nehme ich Bezug auf:
https://gist.github.com/4033430
Ich bezeichne diese als Moduldatei (deine Namengebung 'gui_KundenNeu.py') In dieser Datei befinden sich die Kofigurationliste CONFIG, und die folgenden Klassen:
ListGui
Controller
Model
Hier würde ich die Methode process in Klasse Controller wie folgt abändern:
Code: Alles auswählen
def process(self, listbox_item):
self.view.entry_vars[0].set(listbox_item)
print(self.view.entry_vars[0])
Code: Alles auswählen
def __init__(self, LISTBOX_ITEMS, DEFAULT_LABELS, MAIN_TITLE, SUB_TITLE):
Code: Alles auswählen
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# For Python3.x
LISTBOX_ITEMS = {'0' : 'Privatkunde',
'1' : 'Kleinbetrieb, bis 1000 € Jahresumsatz',
'2' : 'Mittelständischer Betrieb, bis 10.000 € Jahresumsatz',
'3' : 'Großbetrieb, bis 25.000 € Jahresumsatz',
'4' : 'Konzern, ab 25.000 € Jahresumsatz',
'5' : 'Komunaler Träger'}
DEFAULT_LABELS = ['Kundenkreis', 'Namen', 'Zusatz', 'Straße, Nr.', 'PLZ',
'Ort', 'USt-Ident-Nr.', 'Ansprechpartner', 'Telefon', 'Handy',
'Fax', 'Mail','Internetseite']
import gui_KundenNeu as app
app.Controller(LISTBOX_ITEMS, DEFAULT_LABELS, "Haupttitel", "Untertitel").run()
Code: Alles auswählen
from gui_KundenNeu import Controller
Controller(LISTBOX_ITEMS)
Code: Alles auswählen
import gui_KundenNeu as app
app.Controller(LISTBOX_ITEMS, DEFAULT_LABELS, "Haupttitel", "Untertitel").run()
Gruß wuf
Take it easy Mates!
Hallo wuf, Danke für Deine Unterstützung!
Bei Deiner ersten Änderung in der Methode process in Klasse Controller, ist ja nur die Printausgabe geändert, was ja an der Ausführung nichts ändert.
Die Parameternamen, habe ich in Kleinbuchstaben abgeändert.
Die Parameter, habe ich in einer eigenen Modul abgelegt, da es viele verschiedener Datendefinitionen gibt.
Die kann ich dann von dem betreffenden Steuerungsmodul aus abrufen.
Auszug:
Das habe ich übernommen:
Ich habe es mit Deinen Änderungen versucht, das Ergebnis ist unverändert.
Bei mir hat die Ausgabe die mittels Schaltfläche Übernehmen ausgelöst wird, auch vorher schon funktioniert.
Das Problem ist, daß die Auswahl der Listbox nicht auf dem Entry-Feld erscheint also leer bleibt, während mittels Schaltfläche Übernehmen die Auswahl der Listbox mit ausgegeben wird.
Wenn ich in den Entry-Feldern (default_labels) Eingaben mache, werden diese NICHT mittels Schaltfläche Übernehmen ausgegeben.
Grüße Nobuddy
Bei Deiner ersten Änderung in der Methode process in Klasse Controller, ist ja nur die Printausgabe geändert, was ja an der Ausführung nichts ändert.
Die Parameternamen, habe ich in Kleinbuchstaben abgeändert.
Die Parameter, habe ich in einer eigenen Modul abgelegt, da es viele verschiedener Datendefinitionen gibt.
Die kann ich dann von dem betreffenden Steuerungsmodul aus abrufen.
Auszug:
Code: Alles auswählen
def kunden():
main_title = 'Anlage Neukunden'
sub_title = 'Auswahl Kundenkreis'
# Kundendefinition
listbox_items = {'0' : 'Privatkunde',
'1' : 'Kleinbetrieb, bis 1000 € Jahresumsatz',
'2' : 'Mittelständischer Betrieb, bis 10.000 € Jahresumsatz',
'3' : 'Großbetrieb, bis 25.000 € Jahresumsatz',
'4' : 'Konzern, ab 25.000 € Jahresumsatz',
'5' : 'Komunaler Träger'}
# Kundenspalten
default_labels = ['Kundenkreis', 'Namen', 'Zusatz', 'Straße, Nr.',
'PLZ', 'Ort', 'USt-Ident-Nr.', 'Ansprechpartner', 'Telefon',
'Handy', 'Fax', 'Mail','Internetseite']
return main_title, sub_title, kundendefintion, kundenspalten
Code: Alles auswählen
import gui_KundenNeu as app
app.Controller(listbox_items, default_labels, main_title, sub_title).run()
Bei mir hat die Ausgabe die mittels Schaltfläche Übernehmen ausgelöst wird, auch vorher schon funktioniert.
Das Problem ist, daß die Auswahl der Listbox nicht auf dem Entry-Feld erscheint also leer bleibt, während mittels Schaltfläche Übernehmen die Auswahl der Listbox mit ausgegeben wird.
Wenn ich in den Entry-Feldern (default_labels) Eingaben mache, werden diese NICHT mittels Schaltfläche Übernehmen ausgegeben.
Grüße Nobuddy
OK Nobuddy
Als Referenzscript für die Moduldatei gui_KundenNeu.py gilt für mich immer noch:
https://gist.github.com/4033430folgendes machen:
Da die Zeile:
die nicht benötigte Ausgabe von:
PY_VAR0
wirft.
Habe deine Applikationdatei mit welcher das Ganze gestartet wird wie folgt geändert:
In deiner Moduldatei habe ich die Klasse Model einmal eliminiert da sie für den momentane Stand deiner Anwendung noch nicht viel bringt. Habe noch folgendes gändert:
Ein Klick auf ein Element der Listbox erzeugt ein Eintrag im ersten Entry-Feld. Und ein aktivieren von Übernehmen gib auch alle Eingabefelder aus. Also bei mir funktioniert es so.
N.B: Die Moduldatei qui_KundenNeu.py kann mit dieser Änderung auch direkt gestartet werden.
Gruß wuf
Als Referenzscript für die Moduldatei gui_KundenNeu.py gilt für mich immer noch:
https://gist.github.com/4033430
Stimmt diese Änderung hat keinen Einfluss auf das Funktionieren des Skriptes. Habe ich übrigens auch noch falsch abgeändert. Ich wollte aus der bestehenden Methode process:Nobuddy hat geschrieben:Bei Deiner ersten Änderung in der Methode process in Klasse Controller, ist ja nur die Printausgabe geändert, was ja an der Ausführung nichts ändert.
Code: Alles auswählen
def process(self, listbox_item):
self.view.entry_vars[0].set(listbox_item)
print(self.view.entry_vars[0])
print(listbox_item)
Code: Alles auswählen
def process(self, listbox_item):
self.view.entry_vars[0].set(listbox_item)
print(listbox_item)
Code: Alles auswählen
print(self.view.entry_vars[0])
PY_VAR0
wirft.
Hier musst du mich falsch verstanden haben. Ich meinte nicht die Argumente beim Aufruf bzw. Erstellung der Instanz für Controller sondern die Parameter im Konstruktor __init__ der Klasse Controller.wuf hat geschrieben:Meine Frage. Warum schreibst du in der folgenden Zeile die Parameternamen in Grossbuchstaben (wie Konstanten)?:
Habe deine Applikationdatei mit welcher das Ganze gestartet wird wie folgt geändert:
Code: Alles auswählen
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# For Python3.x
import gui_KundenNeu_01 as app
MAIN_TITLE = 'Anlage Neukunden'
SUB_TITLE = 'Auswahl Kundenkreis'
# Kundendefinition
LISTBOX_ITEMS = {'0' : 'Privatkunde',
'1' : 'Kleinbetrieb, bis 1000 € Jahresumsatz',
'2' : 'Mittelständischer Betrieb, bis 10.000 € Jahresumsatz',
'3' : 'Großbetrieb, bis 25.000 € Jahresumsatz',
'4' : 'Konzern, ab 25.000 € Jahresumsatz',
'5' : 'Komunaler Träger'}
# Kundenspalten
DEFAULT_LABELS = ['Kundenkreis', 'Namen', 'Zusatz', 'Straße, Nr.',
'PLZ', 'Ort', 'USt-Ident-Nr.', 'Ansprechpartner', 'Telefon',
'Handy', 'Fax', 'Mail','Internetseite']
app.Controller(LISTBOX_ITEMS, DEFAULT_LABELS, MAIN_TITLE, SUB_TITLE).run()
Code: Alles auswählen
class Controller(object):
def __init__(self, listbox_items, default_labels, main_title, sub_title):
#self.model = Model(listbox_items)
#self.model2 = Model(default_labels)
self.default_labels = default_labels
self.view = ListGui(self, listbox_items, default_labels,
main_title, sub_title, CONFIG)
def process(self, listbox_item):
self.view.entry_vars[0].set(listbox_item)
print(listbox_item)
def collect_entries(self):
entry_data = dict()
for index, entry_var in enumerate(self.view.entry_vars):
print("{} : {}".format(self.default_labels[index],
entry_var.get()))
entry_data[self.default_labels[index]] = entry_var.get()
print()
print(entry_data)
def run(self):
self.view.run()
#class Model(object):
#def __init__(self, items):
#self.items = items
#self.items2 = items
def main():
Controller(LISTBOX_ITEMS, DEFAULT_LABELS, MAIN_TITLE, SUB_TITLE).run()
#--- MODUL-TEST ---------------------------------------------------------------#
if __name__ == '__main__':
MAIN_TITLE = 'Anlage Neukunden'
SUB_TITLE = 'Auswahl Kundenkreis'
# Kundendefinition
LISTBOX_ITEMS = {'0' : 'Privatkunde',
'1' : 'Kleinbetrieb, bis 1000 € Jahresumsatz',
'2' : 'Mittelständischer Betrieb, bis 10.000 € Jahresumsatz',
'3' : 'Großbetrieb, bis 25.000 € Jahresumsatz',
'4' : 'Konzern, ab 25.000 € Jahresumsatz',
'5' : 'Komunaler Träger'}
# Kundenspalten
DEFAULT_LABELS = ['Kundenkreis', 'Namen', 'Zusatz', 'Straße, Nr.',
'PLZ', 'Ort', 'USt-Ident-Nr.', 'Ansprechpartner', 'Telefon',
'Handy', 'Fax', 'Mail','Internetseite']
main()
N.B: Die Moduldatei qui_KundenNeu.py kann mit dieser Änderung auch direkt gestartet werden.
Gruß wuf
Take it easy Mates!
Hallo wuf, habe alles so von dir übernommen, auf Grundlage von https://gist.github.com/4033430
Starte ich das Modul gui_list_work.py (alter Namen gui_KundenNeu.py) direkt, funktioniert alles so, wie es soll.
Rufe ich aber das Modul über ein anderes Modul auf und übergebe von Dort die Daten, funktioniert es wieder nicht.
Ich poste jetzt mal alle beteiligten Module, damit Du es besser nachvollziehen kannst.
Haupfenster (gui_start.py) von dem aus alles gesteuert werden soll.
Darin habe ich 2 Aufrufe, die gui_list_work.py aufrufen.
Zeile 215 - 218
Zeile 282 - 286
Das betreffende Modul gui_list_work.py.
Modul für Referenzdaten gui_list_names.py für (listbox_items, default_labels, main_title, sub_title).
Alle 3 Dateien hier: https://gist.github.com/4038350
Grüße Nobuddy
Starte ich das Modul gui_list_work.py (alter Namen gui_KundenNeu.py) direkt, funktioniert alles so, wie es soll.
Rufe ich aber das Modul über ein anderes Modul auf und übergebe von Dort die Daten, funktioniert es wieder nicht.
Ich poste jetzt mal alle beteiligten Module, damit Du es besser nachvollziehen kannst.
Haupfenster (gui_start.py) von dem aus alles gesteuert werden soll.
Darin habe ich 2 Aufrufe, die gui_list_work.py aufrufen.
Zeile 215 - 218
Zeile 282 - 286
Das betreffende Modul gui_list_work.py.
Modul für Referenzdaten gui_list_names.py für (listbox_items, default_labels, main_title, sub_title).
Alle 3 Dateien hier: https://gist.github.com/4038350
Grüße Nobuddy
Hi Nobuddy
Leider nimmt deine Programm unter:
https://gist.github.com/4038350
schon eine Ausmass an, wo ich nicht mehr Zeit zum Durcharbeiten investieren möchte. Alleine die für mich neu hinzugekommene Datei gui_start.py importiert zusätzlich Ware aus Modulen wie:welche ich nicht habe.
Hier nochmals die gänderte Variante aus:
https://gist.github.com/4033430
Die Moduldatei (gui_KundenNeu_01.py):
http://www.python-forum.de/pastebin.php?mode=view&s=314
Die Startdatei (start_gui.py):
http://www.python-forum.de/pastebin.php?mode=view&s=315
Kopiere die Dateien:
gui_KundenNeu_01.py
start_gui.py
in ein eigenes Verzeichnis und starte die Datei start_gui.py
Dann muss das folgende funktionieren:
Ein Klick auf ein Element der Listbox transferiert es ins erste Eingabefeld (Kundenkreis). Ein aktivieren der Schaltfläche Übernehmen gib alle Eingabefelder aus. Wenn nicht dann musst du dich anderstwie schlau machen.
Gruß wuf
Leider nimmt deine Programm unter:
https://gist.github.com/4038350
schon eine Ausmass an, wo ich nicht mehr Zeit zum Durcharbeiten investieren möchte. Alleine die für mich neu hinzugekommene Datei gui_start.py importiert zusätzlich Ware aus Modulen wie:
Code: Alles auswählen
from gui_start_moduls import screen_blank, openfile, openfile_search
from gui_start_moduls import openfile_intern, openfile_save_intern
from filestart import fileopen
Hier nochmals die gänderte Variante aus:
https://gist.github.com/4033430
Die Moduldatei (gui_KundenNeu_01.py):
http://www.python-forum.de/pastebin.php?mode=view&s=314
Die Startdatei (start_gui.py):
http://www.python-forum.de/pastebin.php?mode=view&s=315
Kopiere die Dateien:
gui_KundenNeu_01.py
start_gui.py
in ein eigenes Verzeichnis und starte die Datei start_gui.py
Dann muss das folgende funktionieren:
Ein Klick auf ein Element der Listbox transferiert es ins erste Eingabefeld (Kundenkreis). Ein aktivieren der Schaltfläche Übernehmen gib alle Eingabefelder aus. Wenn nicht dann musst du dich anderstwie schlau machen.
Gruß wuf
Take it easy Mates!
Hallo wuf, ja so funktioniert es.
Daß das Ganze zu komplex und zeitaufwendig für Dich ist verstehe ich, hast ja bestimmt noch ein paar Kleinigkeiten sonst zu erledigen.
Generell mal die Frage.
Wenn ich von meiner gui_start.py aus die gui_KundenNeu.py aufrufe, bleibt ja das Fenster von gui_start.py weiter offen und ein weiteres Fenster wird geöffnet (gui_KundenNeu.py), daß da das Problem ist?
Grüße Nobuddy
Daß das Ganze zu komplex und zeitaufwendig für Dich ist verstehe ich, hast ja bestimmt noch ein paar Kleinigkeiten sonst zu erledigen.
Generell mal die Frage.
Wenn ich von meiner gui_start.py aus die gui_KundenNeu.py aufrufe, bleibt ja das Fenster von gui_start.py weiter offen und ein weiteres Fenster wird geöffnet (gui_KundenNeu.py), daß da das Problem ist?
Grüße Nobuddy
Also so langsam wird das Ganze doch arg unuebersichtlich. Jetzt habe ich bei mir 3 Dateien, 2 davon beinghalten eine Controller- und eine main-Definition. Beim fehlenden gui_start_moduls bin ich dann ausgestiegen.
Also:
In der jetzigen Phase kannst du noch alles in eine Datei packen. Sich alles zusammensuchen zu muessen ist fuer uns nicht so motivierend (und, so glaube ich, wird auch dir einen besseren Ueberlick verschaffen).
Fuer spaeter:
Ich hatte ja schon mal gesagt: Mach ein Github Repository. Damit meinte ich nicht die Gist Snippets, sondern ein "richtiges" Projekt auf Github. Dann kann man auch mit vielen Dateien arbeiten. (Wenn dein Projekt denn OpenSource sein soll.)
Nix fuer ungut
yipyip
Also:
In der jetzigen Phase kannst du noch alles in eine Datei packen. Sich alles zusammensuchen zu muessen ist fuer uns nicht so motivierend (und, so glaube ich, wird auch dir einen besseren Ueberlick verschaffen).
Fuer spaeter:
Ich hatte ja schon mal gesagt: Mach ein Github Repository. Damit meinte ich nicht die Gist Snippets, sondern ein "richtiges" Projekt auf Github. Dann kann man auch mit vielen Dateien arbeiten. (Wenn dein Projekt denn OpenSource sein soll.)
Nix fuer ungut
yipyip
Nur keine Angst, möchte Euch da nicht überfordern, verstehe ja daß das zuviel ist.
Ich werde für meine gui_start.py für Euch ein Fenster mit nur einem Button kreiren, das dann die Funktion hat, das betreffende Modul gui_NeuKunden.py aufzurufen und die Daten an dieses Modul von gui_start.py aus zu übergeben.
Dann sollte das recht einfach sein, die Ausführungsweise von mir zu verstehen.
Das mit dem Github Repository, da kenne ich mich nicht aus, dachte das gist.github wäre dies.
Grüße Nobuddy
Ich werde für meine gui_start.py für Euch ein Fenster mit nur einem Button kreiren, das dann die Funktion hat, das betreffende Modul gui_NeuKunden.py aufzurufen und die Daten an dieses Modul von gui_start.py aus zu übergeben.
Dann sollte das recht einfach sein, die Ausführungsweise von mir zu verstehen.
Das mit dem Github Repository, da kenne ich mich nicht aus, dachte das gist.github wäre dies.
Grüße Nobuddy