class questions(tkinter.Tk):
def __init__(self, *args, **kwargs):
tkinter.Tk__init__(self, *args, **kwargs)
container = tkinter.Frame(self)
container.pack(side='top', fill='both', expand=True)
container.grid_rowconfigure(0, weight=1)
container.grid_columnconfigure(0, weight=1)
self.frames = {}
for F in (StartPage, QuestionOne, QuestionTwo)
frame = F(container, self)
self.frames[F] = frame
frame.grid(row = 0, column= 0, sticky='nsew')
self.show_frame(StartPage)
def show_frame(self, cont):
frame = self.frames[cont]
frame.tkraise()
def show_choice(self, cont)
global pr_var
global x
questions.pr_var = x.get()
var_list[0]= questions.pr_var
print('pr_var = ' + str(questions.pr_var)) ## i print it to check
frame= self.frames[QuestionOne]
frame.tkraise()
class Startpage(tkinter.Frame):
def __init__(self, parent, controller):
tkinter.Frame.__init__(self, parent)
label= tkinter.Label(self, text='Hello', font= LARGE_FONT)
label.pack(pady=10, padx=10)
button=ttk.Button(self, text='Start', command= Lambda:controller.show_frame(QuestionOne))
button.pack()
class QuestionOne(tk.Frame):
def __init__(self, parent, controller):
tkinter.Frame.__init__(self, parent)
label= tkinter.Label(self, text='How many pieces?', font= LARGE_FONT)
label.grid(row= 3, column=1, pady=10, padx=50)
global x
self.radio_num= tkinter.IntVar()
x = self.radio_num
self.rb1 = tkinter.Radiobutton(self, text='one', variable=self.radio_num, value=1)
self.rb2 = tkinter.Radiobutton(self, text='two', variable=self.radio_num, value=2)
self.rb1.grid(row=5, column=0, padx=10)
self.rb2.grid(row=6, column=0, padx=10)
button1=ttk.Button(self, text='Next', command= Lambda:controller.show_choice(self))
button2=ttk.Button(self, text='back', command= Lambda:controller.show_frame(StartPage))
button1.grid(row=25, column=1, padx=10, pady=50)
button2.grid(row=25, column=0, padx=10, pady=50)
class QuestionTwo(tkinter.Frame):
def __init__(self, parent, controller):
tkinter.Frame.__init__(self, parent)
label= tkinter.Label(self, text='So you have ' +str(var_list[0]) + ' piece(s)', font= LARGE_FONT) ## here is the problem
label.grid(row= 3, column=1, pady=10, padx=50)
global x
global pr_var
button1=ttk.Button(self, text='back', command= Lambda:controller.show_frame(QuestionOne))
button1.grid(row=25, column=1, padx=10, pady=50)
app=questions()
app.mainloop()
Ich arbeite gerade an einem Programm, und ich würde ein bisschen Hilfe schätzen. ich bin ziemlich neu in der Programmierung im Allgemeinen so bitte Geduld .. :-)Klasseninstanzen in Listen als Variablen speichern (außerhalb einer Klasse) Python
so schrieb ich ein Programm, das einige Variablen vom Benutzer und dann verarbeitet sie (ich absolvierte dieses Verarbeitungsprogramm, so hier gibt es keine Hilfe erforderlich). Dann begann ich eine GUI zu schreiben, wo einige Fragen gestellt werden und die Eingabe vom Benutzer als Variable gespeichert wird. Am Ende dieser Fragen werden alle Variablen gespeichert und aus dem Bearbeitungsprogramm verwendet.
Also wo ich feststecke ist, dass ich die Variablen nicht speichern kann !!
i Klassen verwende für die Gui..where die erste Klasse der Hauptrahmen in Form hält:
def __init__(self, *args, **kwargs)
und für jede Seite i verwenden, erstelle ich eine neue Klasse (neuer Rahmen), der bezieht sich zu der primären Klasse.
Jetzt ist das Problem, dass zum Beispiel auf Seite 2, wo der Benutzer zum ersten Mal ein Optionsfeld wählt, der Wert von einer Methode der Primary-Klasse (wo immer jede neue Seite sich bezieht) mit 'Befehl' und berechnet wird Innerhalb dieser Methode drucke ich den Wert nach der Berechnung (um zu sehen, ob er korrekt gespeichert ist) und es funktioniert. Bis hier ist alles in Ordnung.
Mein Problem ist, wenn ich die gespeicherten Variablen in Seite 3 funktioniert es nicht verwenden ...
Ich habe versucht, die Klasseninstanz als globale Variable zu machen und es funktioniert nur innerhalb der Methode der primären class..after wenn ich es in einer anderen Klasse benutzen will (ich meine auf einer anderen Seite), funktioniert es nicht. Ich habe versucht, einen Verweis als ClassA.Variable zu machen, aber das hat auch nicht funktioniert .. Ich versuche, die Variable innerhalb der Init-Methode mit None zu definieren (sonst bekomme ich, dass die '' Variable '' nicht definiert ist) und wenn es von Seite 2 berechnet, funktioniert es, aber wenn ich auf Seite 3 die Variable in Form eines Strings innerhalb eines Labels mit tkinter einfügen will, dann bekomme ich den Wert None, obwohl ich eine globale Variable sein sollte ... ich bin sehr verwirrt
Mein Hauptziel ist es, eine Liste mit den Variablen zu erstellen, die der Benutzer mit Radio-Buttons geben wird. Diese Liste muss außerhalb einer Liste stehen, damit das Verarbeitungsprogramm sie problemlos aufrufen kann.
ich das versucht too..to eine Liste zu machen, aber wenn ich auf die Liste siehe [0] (zum Beispiel für die erste Variable i erhalten dann, dass ... Listenindex außerhalb des zulässigen Bereichs
Wie kann ich nehmen Klasseninstanzen und sie in der Liste Komponenten als Variablen ??
PS: die Variablen sind nicht ganze Zahlen oder strings..the sind Verweise auf eine Klasseninstanz zum Beispiel ......
list[0] = x.get()
wo global x und
self.radio_num =tkinter. IntVar()
und
x= self.radio_num
PS2: Ich weiß nicht, ob ich alles richtig erklärt, so dass jemand genau verstehen, was mein Problem ist ...wenn nicht, könnte ich einige Code hochladen, wenn
benötigtentweder Weg trotzdem danke :-)
Können Sie eine Kopie des Codes bereitstellen? –
Ich habe gerade einen Teil des Codes hochgeladen..ich hoffe, dass jetzt mein Problem leichter zu verstehen ist – GeorgM