как я могу распечатать запись, которую я сделал в одном кадре, в другом кадре - PullRequest
0 голосов
/ 06 мая 2020

Я построил свои первые несколько скриптов с милыми маленькими GUI на них, как мне показали учебники, но ни один из них не описывает, что делать для более сложной программы. Я хочу напечатать значения, введенные в InputPage в second_page. Когда я пытаюсь запустить свою программу, каждый кадр готовится еще до ввода моего ввода. Здесь я попытался напечатать первую запись в кадре second_page, используя переменную с именем «alpha». Как мне с этим справиться?

from tkinter import *
from tkinter import ttk

LARGE_FRONT=("Verdana",12) 

class simmulator(Tk):

 def __init__(self, *args, **kwargs):
  Tk.__init__(self, *args, **kwargs)

  container = 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 (InputPage,second_page):
      frame = F(container, self)
      self.frames[F] = frame
      frame.grid(row=0, column=0, sticky="nsew")
  self.show_frame(InputPage)

 def show_frame(self, cont):
  frame = self.frames[cont]
  frame.tkraise()

 def get_page(self, page_class):
  return self.frames[page_class]


class InputPage(Frame):

 def __init__(self, parent, controller):
  self.controller = controller
  Frame.__init__(self,parent)        
  label = Label(self, text="simmulator",font=LARGE_FRONT)
  label.grid(row=0, column=0, sticky ='n', columnspan =2)
  # i brought your variable in the class for example sake 
  namesInput = ["Na:", "Nd:", "Temp(t):"]
  self.entryWidgets = [] # we want to call this in another function so we assign it as self.variableName

  labelWidgets = []
  self.alpha = None

        #LOOP TO CREATE WIDGETS
  for i in range(0, len(namesInput)):
   labelWidgets.append(Label(self, text = namesInput[i]))
   self.entryWidgets.append(Entry(self))
   labelWidgets[-1].grid(row= i+1, column =0, sticky='e')
   self.entryWidgets[-1].grid(row= i+1, column = 1, sticky='w')

  submit = ttk.Button(self, text = "Submit", command = lambda:[self.push_retrieve_solutions(),controller.show_frame(second_page)])
  submit.grid(row = 6, column =0, columnspan =2)

 def getEntries(self):
  results = []
  for x in self.entryWidgets: # i.e for each widget in entryWidget list
   results.append(x.get())
  self.alpha = results[0]
  return results

 def push_retrieve_solutions(self):
  print(self.getEntries())

class second_page(Frame):
  def __init__(self, parent, controller):
   self.controller = controller
   Frame.__init__(self,parent)     

   label = Label(self, text="Parameter",font=LARGE_FRONT)
   label.grid(row=0, column=0, sticky ='n', columnspan =2)

   ctrler = self.controller.get_page(InputPage)

   label1 = Label(self,text = "Na  =")
   label1.grid(row= 1, column =1, sticky='e')
   fabel1 = Label(self, text = ctrler.alpha)
   fabel1.grid(row= 1, column = 2, sticky='w')


app = simmulator()
app.mainloop()
...