Tkinter über Netbeans

Fragen zu Tkinter.
Antworten
pro2311
User
Beiträge: 10
Registriert: Dienstag 31. Juli 2018, 09:26

Hallo zusammen,
da ich zum einen neu hier bin und mit Python/Tkinter noch nicht gearbeitet habe möchte ich mal einige Fragen stellen bei denen ich hier nicht so ganz weiter komme. Ich hoffe dass mir dadurch der Einstieg etwas erleichtert werden kann.

Ich versuche seit geraumer Zeit auf einem Frame mehrere Elemente an oder abzuschalten. Hier zuerst einmal mein Quellcode der auch nicht sonderlich strukturiert ist aber...

Alle Elemente die ich im Moment brauche sind erst einmal dargestellt. Hier sollte das so sein dass wenn das Programm aufgerufen wird nur die drei Button von oben zu sehen sind. Nachdem der erste Button gedrückt wurde sind sowohl die Checkboxen zu sehen als auch +, - und Reset Button.

Was muss ich hier tun?

Hier der Quellcode:
try: #Python 2 imports
from Tkinter import *
import ttk
import tkFileDialog as filedialog

except ImportError: #Python 3 imports
from tkinter import *
from tkinter import ttk
from tkinter import filedialog
from tkinter import messagebox

class Flugdaten:



def __init__(self, master):
self.master = master
master.title("Flugdaten Manager")
master.geometry("450x400")

master.grid_propagate(0)

self.total = 0
self.entered_number = 1

self.total_label_text = IntVar()
self.total_label_text.set(self.total)
self.total_label = Label(master, textvariable=self.total_label_text)

self.label = Label(master, text="Fluege Anzahl: ")

vcmd = master.register(self.validate) # we have to wrap the command
self.entry = Entry(master, validate="key", validatecommand=(vcmd, '%P'))

self.add_button = Button(master, text="+", command=lambda: self.update("add"))
self.subtract_button = Button(master, text="-", command=lambda: self.update("subtract"))
self.reset_button = Button(master, text="Reset", command=lambda: self.update("reset"))
self.Flug_button = Button(master, text="Flugdaten", command=lambda: self.update("Unter"), height = 5, width = 10)
self.Baustunden_button = Button(master, text="Baustunden", command=lambda: self.update("Bau"), height = 5, width = 10)
self.Flugleiter_button = Button(master, text="Flugleiter", command=lambda: self.update("Flugl"), height = 5, width = 10)
self.Infolbl = Label(master, text="Informationen :")


# LAYOUT

# Button
self.Flug_button.grid(row=0, column=1, sticky=W)
self.Baustunden_button.grid(row=0, column=2, sticky=W+E)
self.Flugleiter_button.grid(row=0, column=3, sticky=E)

self.label.grid(row=2, column=0, sticky=W)
self.total_label.grid(row=2, column=1, columnspan=1, sticky=E)


# Checkboxen
def auswahlClick():
dezimalzahl = var1 print dezimalzahl

var1 = IntVar()
var2 = IntVar()
Checkbutton(master, text="Verbrenner", command=auswahlClick, variable=var1).grid(row=1, column=1, sticky=W)

Checkbutton(master, text="Elektro", command=auswahlClick, variable=var2).grid(row=1, column=2, sticky=E)


self.add_button.grid(row=5, column=0)
self.subtract_button.grid(row=5, column=1)
self.reset_button.grid(row=5, column=2, sticky=W+E)
self.Infolbl.grid(row=6, column=1, sticky=S+W)


def validate(self, new_text):
if not new_text: # the field is being cleared
self.entered_number = 0
return True

try:
self.entered_number = int(new_text)
return True
except ValueError:
return False



def update(self, method):
if method == "add":
self.total += self.entered_number
elif method == "subtract":
self.total -= self.entered_number
elif method == "Unter":
self.entered_number=10
self.total -= self.entered_number
else: # reset
self.total = 0

self.total_label_text.set(self.total)
self.entry.delete(0, END)
root = Tk()
my_gui = Flugdaten(root)
root.mainloop()

Danke
Reinhold
pro2311
User
Beiträge: 10
Registriert: Dienstag 31. Juli 2018, 09:26

Vielleicht mal in der Übersicht einfacher zu lesen:

Code: Alles auswählen

 try: #Python 2 imports
from Tkinter import *
import ttk
import tkFileDialog as filedialog

except ImportError: #Python 3 imports
from tkinter import *
from tkinter import ttk
from tkinter import filedialog
from tkinter import messagebox

class Flugdaten:



def __init__(self, master):
self.master = master
master.title("Flugdaten Manager")
master.geometry("450x400")

master.grid_propagate(0)

self.total = 0
self.entered_number = 1

self.total_label_text = IntVar()
self.total_label_text.set(self.total)
self.total_label = Label(master, textvariable=self.total_label_text)

self.label = Label(master, text="Fluege Anzahl: ")

vcmd = master.register(self.validate) # we have to wrap the command
self.entry = Entry(master, validate="key", validatecommand=(vcmd, '%P'))

self.add_button = Button(master, text="+", command=lambda: self.update("add"))
self.subtract_button = Button(master, text="-", command=lambda: self.update("subtract"))
self.reset_button = Button(master, text="Reset", command=lambda: self.update("reset"))
self.Flug_button = Button(master, text="Flugdaten", command=lambda: self.update("Unter"), height = 5, width = 10)
self.Baustunden_button = Button(master, text="Baustunden", command=lambda: self.update("Bau"), height = 5, width = 10)
self.Flugleiter_button = Button(master, text="Flugleiter", command=lambda: self.update("Flugl"), height = 5, width = 10)
self.Infolbl = Label(master, text="Informationen :")


# LAYOUT

# Button
self.Flug_button.grid(row=0, column=1, sticky=W) 
self.Baustunden_button.grid(row=0, column=2, sticky=W+E)
self.Flugleiter_button.grid(row=0, column=3, sticky=E)

self.label.grid(row=2, column=0, sticky=W)
self.total_label.grid(row=2, column=1, columnspan=1, sticky=E)


# Checkboxen
def auswahlClick():
dezimalzahl = var1 print dezimalzahl

var1 = IntVar()
var2 = IntVar()
Checkbutton(master, text="Verbrenner", command=auswahlClick, variable=var1).grid(row=1, column=1, sticky=W)

Checkbutton(master, text="Elektro", command=auswahlClick, variable=var2).grid(row=1, column=2, sticky=E)


self.add_button.grid(row=5, column=0)
self.subtract_button.grid(row=5, column=1)
self.reset_button.grid(row=5, column=2, sticky=W+E)
self.Infolbl.grid(row=6, column=1, sticky=S+W)


def validate(self, new_text):
if not new_text: # the field is being cleared
self.entered_number = 0
return True

try:
self.entered_number = int(new_text)
return True
except ValueError:
return False



def update(self, method):
if method == "add":
self.total += self.entered_number
elif method == "subtract":
self.total -= self.entered_number
elif method == "Unter":
self.entered_number=10
self.total -= self.entered_number 
else: # reset
self.total = 0

self.total_label_text.set(self.total)
self.entry.delete(0, END)
root = Tk()
my_gui = Flugdaten(root)
root.mainloop()
Antworten