2013-05-29 2 views
2

Это должно быть так просто, но я не смог выяснить, как сделать простой диалог подтверждения подтверждения/отмены в enaml. Может кто-нибудь, пожалуйста, просветит меня? Я использую инструментарий ETS Qt4 с pyside api, python 2.7 и enaml 0.6.8.Создать диалог ОК/Отмена

Мое приложение состоит из MainWindow и запускается так:


from enaml.stdlib.sessions import simple_session 
from enaml.qt.qt_application import QtApplication 

... 

session = simple_session('myApp',...) 

app = QtApplication([session]) 
app.start_session('myApp') 
app.start() 

Заранее спасибо

ответ

3

ли, кажется, что там должны быть встроенный виджет. Тем не менее, на основе примера FileDialog, который поставляется с enaml, вот что работает, и шаблон легко расширяется.

from enaml.layout.api import vbox, align 
from enaml.widgets.api import Window, Container, Label, PushButton 


enamldef Main(Window): main_win: 

    title = 'Main' 
    attr dlg_result : str = 'waiting' 

    Container: 
     constraints = [ 
      vbox(pb, lbl), 
      align('h_center', lbl, pb), 
     ] 

     Label: lbl: 
      align = 'center' 
      text << main_win.dlg_result 

     PushButton: pb: 
      text = 'Dialog' 
      clicked :: 
       session.add_window(TheDialog(listener=main_win,result='dlg_result')) 

enamldef TheDialog(Window): dlg_win: 
    title = 'Dialog' 
    modality = 'application_modal' # one of ['non_modal', 'window_modal', 'application_modal'] 
    attr listener 
    attr result 

    Container: 
     constraints = [] 

     PushButton: ok_btn: 
      text = 'Okay' 
      clicked :: 
       setattr(listener, result, 'Okay') 
       dlg_win.close() 

     PushButton: cancel_btn: 
      text = 'Cancel' 
      clicked :: 
       setattr(listener, result, 'Cancel') 
       dlg_win.close() 
Смежные вопросы