2015-06-18 169 views
-1

在这个应用程序中,我试图执行一个用户可以写入日期的弹出窗口。在用户点击我已经创建的提交按钮后,这个弹出窗口必须发生。用户输入到该弹出窗口的日期必须保存到一个变量中,稍后将在代码中使用该变量。为了做到这一切我试过如下:执行弹出tkinter窗口的问题

def CreateOrderPop(self): 
      def popup(): 
       #contenido = input("Contenido de Orden ") 
       #diaDeEntregar = input("Dia de Entrega") 
       self.userentryA = Entry("Dia de Entrega: ") 
       self.userentryA.pack() 
       self.userentryAbu = Button(text= "Guardar", command = self.guardarFechaOrden) 
       self.userentryAbu.pack() 
      def guardarFechaOrden(self): 
       global userDate 
       userDate = self.userentryA.get() 
       self.destroy()  

    def submit(self): 
     result = next(self.counter) 
     global orderResult 
     orderResult = str(result) 
     global contents1 
     contents1 = ("Nombre: {}".format(self.entry_name.get())) 
     global contents2 
     contents2 = ("Email: {}".format(self.entry_email.get())) 
     global contents3 
     contents3 = ("Num Cel/Tel: {}".format(self.entry_numtc.get())) 
     global contents4 
     contents4 = ("Información Adicional: {}".format(self.entry_addinf.get(1.0, "end"))) 

     def CreateOrder(): 
      fecha = datetime.now() 
      fechaDeCreacion = fecha.strftime(" %A, %B %d, %Y") 
      #diaDeEntregar = userDate 
      #global fechaDeEntrega 
      #fechaDeEntrega = fechaDeCreacion + str(diaDeEntregar) 
      numOrden = orderResult 
      return fechaDeCreacion, orderResult 


     completeOrden = [contents1, contents2, contents3, contents4, CreateOrder()] 
     completeOrdenEnum = "Orden Num:" + orderResult, completeOrden 
     Database.mainDatabase.append(completeOrdenEnum) 

     command = self.CreateOrderPop() 

运行的代码,并点击提交按钮后,除了我没有得到我想要的一切弹出运行正常。

CHANGES

我加入这个类来帮助我建立了我一直在寻找:

class PopOrden: 
     def __init__(self,master): 
      self.master = master 
      top=self.top=Toplevel(master) 
      self.l=Label(top,text="Fecha de Entrega") 
      self.l.pack() 
      self.e=Entry(top) 
      self.e.pack() 
      self.b=Button(top,text='Ok',command=self.cleanup) 
      self.b.pack() 

     def cleanup(self): 
      self.value=self.e.get() 
      self.top.destroy() 


     def entryValue(self): 
      return self.w.value 
      print(self.w.value) 

上面的代码与此编辑代码一起:

def submit(self): 

     result = next(self.counter) 
     print (result) 
     def controLoo(): 
      if result == 1: 
       self.CreateOrderPop() 
     command = controLoo() 
     global orderResult 
     orderResult = str(result) 
     global contents1 
     contents1 = ("Nombre: {}".format(self.entry_name.get())) 
     global contents2 
     contents2 = ("Email: {}".format(self.entry_email.get())) 
     global contents3 
     contents3 = ("Num Cel/Tel: {}".format(self.entry_numtc.get())) 
     global contents4 
     contents4 = ("Información Adicional: {}".format(self.entry_addinf.get(1.0, "end"))) 

     def CreateOrder(): 
      fecha = datetime.now() 
      fechaDeCreacion = fecha.strftime(" %A, %B %d, %Y") 
      #diaDeEntregar = PopOrden 
      #global fechaDeEntrega 
      #fechaDeEntrega = fechaDeCreacion + str(diaDeEntregar) 
      numOrden = orderResult 
      return fechaDeCreacion, orderResult 


     completeOrden = [contents1, contents2, contents3, contents4, CreateOrder()] 
     completeOrdenEnum = "Orden Num:" + orderResult, completeOrden 
     Database.mainDatabase.append(completeOrdenEnum) 


     command = self.database_window() 


     self.clear() 


     messagebox.showinfo(title = "Orden #"+ orderResult, message = "Orden Guardada") 

然而,我现在有一个空白tk popu的问题,这也是我想要的弹出窗口生成的。

+0

出现在缩进是全乱了。 –

+0

我决定采取另一条工作路线。 – feners

+0

这只是我完整代码的一小部分。 – feners

回答

0

我不确定你的意思是什么都运行正常,因为你的代码似乎有一些主要的格式问题(缩进至少说)。但是,通常通过Toplevel()小部件实现“弹出窗口”。请参阅this有用的资源。在我看来,这对于tkinter来说是一个很好的资源。

此外,你可能会发现this问题的答案有帮助。

0

你为什么不使用一个消息框,直接

from tkinter import * 
import tkMessageBox 
root = Tk() 

def popUp(): 
    result = tkinter.messageBox.popUp("Quiz","Are you ready? ") 
    # result wil be yes or no 
    if result == 'yes': 
     #do something 
    else: 
     # do something 

submitButton = Button(root,text= "Submit") 
submitButton.bind("<Button-1",popup) 
# onleft click on submit popup method gets called 
submitButton.pack()