2015-06-18 149 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()