Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 4, 2009 07:27:45

DeFoR
От:
Зарегистрирован: 2008-02-21
Сообщения: 16
Репутация: +  0  -
Профиль   Отправить e-mail  

wxFrame - modal или wxDialog - SetToolBar

Доброе время
Помогите пожалусто
ни как не могу разобраться как сделать:
нужна модальная форма с тулбаром
У wxFrame нет метода ShowModal
а у wxDialog нет SetToolBar
или я делаю что то нетак.



Офлайн

#2 Июнь 4, 2009 08:25:02

hellslade
От:
Зарегистрирован: 2008-01-28
Сообщения: 240
Репутация: +  0  -
Профиль   Отправить e-mail  

wxFrame - modal или wxDialog - SetToolBar

like this maybe..

# -*- coding: cp1251 -*-

import wx

class Frame(wx.Frame):
def __init__(self, parent):
wx.Frame.__init__(self, parent)
self.panel = wx.Panel(self)
self.but = wx.Button(self.panel, label='Show Modal Frame')
wx.EVT_BUTTON(self, self.but.GetId(), self.ShowFrame)
def ShowFrame(self, evt):
frame = ModalFrame(self)
frame.Show()

class ModalFrame(wx.Frame):
def __init__(self, parent):
wx.Frame.__init__(self, parent, style=wx.DEFAULT_FRAME_STYLE | wx.STAY_ON_TOP)
self.panel = wx.Panel(self)
wx.EVT_KILL_FOCUS(self, self.OnKillFocus)
wx.EVT_KILL_FOCUS(self.panel, self.OnKillFocus)
def OnKillFocus(self, evt):
self.SetFocus()

class App(wx.App):
def __init__(self):
wx.App.__init__(self)
frame = Frame(None)
frame.Show()

if __name__ == "__main__":
app = App()
app.MainLoop()



Офлайн

#3 Июнь 4, 2009 08:47:42

DeFoR
От:
Зарегистрирован: 2008-02-21
Сообщения: 16
Репутация: +  0  -
Профиль   Отправить e-mail  

wxFrame - modal или wxDialog - SetToolBar

Спасибо за ответ
только у меня это несработало, модальнаяформа теряет фокус.
Вообщем я подумал и решил пользоваться не модальным фреймом, просто передаю ему ссылку на объект вызвавший его, и получилось что модальность вообщемто не так и необходима.
Спасибо http://python.su/forum/viewtopic.php?id=3749 натолкнул на решение
Хотя всеже и модальный фрейм тоже хочется.



Офлайн

#4 Июнь 4, 2009 08:59:47

hellslade
От:
Зарегистрирован: 2008-01-28
Сообщения: 240
Репутация: +  0  -
Профиль   Отправить e-mail  

wxFrame - modal или wxDialog - SetToolBar

DeFoR
только у меня это несработало
Конечно несработало :) ведь у вас контролы на этом фрейме :)
Для каждого контрола нужно определить событие wx.EVT_KILL_FOCUS(<контрол>, self.OnKillFocus)
Если их много, можно в цикле пройтись по всем child'ам фрейма



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version