pyglet 윈도우와 콤보 윈도우를 같이 띄울려는데 잘 되지 않네요
조회수 703 답변수 0 반응수 0 등록일 2017.05.24 13:04:34

import Tkinter as tk
import ttk
import pyglet

class Campo(object):
 """Clase para definir cada campo del formulario."""

    def __init__(self, padre, linea, etiqueta, tipo, valor, modo=False):
       self.padre = padre
       self.linea = linea
       self.etiqueta = etiqueta
       self.valor = tk.StringVar()
      self.etiqueta = tk.Label(padre, text=etiqueta)
      self.etiqueta.grid(column=0, row=linea)
      tipos = {'combobox': self.combobox,
                   'entry': self.entry}
      tipos[tipo](valor, modo)

   def entry(self, valor, modo=False):
      self.ent = tk.Entry(self.padre, textvariable=self.valor)
      self.valor.set(valor)
      self.ent.grid(column=1, row=self.linea)

   def combobox(self, valor, modo=False):
       estado = 'readonly' if modo else 'normal'
       self.box = ttk.Combobox(self.padre,
       textvariable=self.valor,
       state=estado)
       self.box['values'] = valor
       self.box.current(0) # Selecciona el primer elemento de la tupla.
       self.box.bind("<<ComboboxSelected>>", self.combobox_elegir)
       self.box.grid(column=1, row=self.linea)

   def combobox_elegir(self, evento):
       self.valor.set(self.box.get())


class Formulario(object):
 """Clase para definir un conjunto de campos."""

   def __init__(self, padre, campos):
      self.padre = padre
      self.campos = {}
      self.guardar = False
      linea = 0
      for campo in campos:
          etiqueta, tipo, valor, modo = campo
          self.campos[etiqueta] = Campo(padre, linea,
                                                             etiqueta, tipo, valor, modo)
          linea += 1
      self.btnacep = tk.Button(padre, text="Aceptar", command=self.aceptar)
      self.btncanc = tk.Button(padre, text="Cancelar", command=self.cancelar)
      self.btnacep.grid(column=1, row=linea, sticky='W')
      self.btncanc.grid(column=1, row=linea, sticky='E')

   def aceptar(self):
      self.guardar = True
      self.padre.destroy()

   def cancelar(self):
       self.padre.destroy()

vidPath="Wildlife.mpg"
window = pyglet.window.Window()
player = pyglet.media.Player()
source = pyglet.media.StreamingSource()
MediaLoad = pyglet.media.load(vidPath)

player.queue(MediaLoad)
player.play()

pyglet.app.run()
if __name__ == '__main__':


     raiz = tk.Tk()
     form = Formulario(raiz, [
                                    ["Nombre", "combobox", ['Juan', 'Luis', 'Pedro'],
                                       False],
                                   ["Direccion", "entry", "", False],
                                   ["Tipo", "combobox", ['Casa', 'Trabajo', 'Movil'],
                                       True],
                                   ["Numero", "entry", "(595)", False]
                                     ])
      raiz.mainloop()

     if form.guardar:
         for campo in form.campos:
             print campo, form.campos[campo].valor.get()

@window.event
def on_draw():
     window.clear()
     if player.source and player.source.video_format:
          player.get_texture().blit(0,0)

답변 작성

질문에 적합한 답변을 상세히 작성해 주시기 바랍니다.

답변이 찬성되면 태그평판 +2점이 적립, 반대되면 태그평판 -1점 차감됩니다.

답변이 채택되면 태그평판 +10점이 적립됩니다.