Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> wx Application - создание и закрытие окна, создание и закрытие о 
V
    Опции темы
GoD
Дата 8.2.2007, 13:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 6.10.2006

Репутация: нет
Всего: 1



Друзья, к примеру есть у нас код создания нового окна.
Код

import wxPython
from wxPython.wx import *

class MyFrame(wxFrame):
    def __init__(self, parent, ID, title, pos=wxDefaultPosition,
                 size=(900, 600), style=wxDEFAULT_FRAME_STYLE):
        wxFrame.__init__(self, parent, ID, title, pos, size, style)


class MyApp(wxApp):
    def OnInit(self):
        frame = MyFrame(NULL, -1, "Main Fraim")
        frame.Show(true)
        self.SetTopWindow(frame)
        return true

        
app = MyApp(0)
app.MainLoop()


Проблема в следующем, закрыть это окно можно только один раз, после повторного запуска нажимаем на закрытие, а окно не закрывается. 
Подскажите как сделать так чоб окно закрывалось всегда. 
Сразу предупреждаю, вариант с добавлением в конец программы кода - app.Destroy() , я знаю. Хотелось бы другие возможности узнать.
PM MAIL   Вверх
proDiva
Дата 12.2.2007, 10:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 130
Регистрация: 19.9.2006
Где: КЧР, Россия

Репутация: нет
Всего: 7



У меня таких проблем нет, все открывается и закрывается)) Различие нашла только в одном:
18-ая строка "app = MyApp(0)", в моих приложениях - "app = MyApp(redirect=True)". Попробуй, может дело только в этом.
PM MAIL ICQ   Вверх
GoD
Дата 14.2.2007, 14:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 6.10.2006

Репутация: нет
Всего: 1



Цитата(proDiva @ 12.2.2007,  10:15)
У меня таких проблем нет, все открывается и закрывается)) Различие нашла только в одном:
18-ая строка "app = MyApp(0)", в моих приложениях - "app = MyApp(redirect=True)". Попробуй, может дело только в этом.

Да нет не помогает. После первого вмзова окно зарывается, а после воторого нивкакую... вылетает с ошибкой и все тут.
PM MAIL   Вверх
GoD
Дата 16.2.2007, 16:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 6.10.2006

Репутация: нет
Всего: 1



Все сделал. Надо просто добавить событие закрытия окна и проблем никаких не будет
Код

import wx

class MyFrame(wx.Frame):
    def __init__(self, parent, ID, title, pos, size):
        wx.Frame.__init__(self, parent, ID, title, pos, size)


class MyApp(wx.App):
    def __init__(self, redirect=True, filename=None):
        print "App __init__"
        wx.App.__init__(self, redirect, filename)

    
    def OnInit(self):
        global id, handle
        self.frame = MyFrame(parent=None, ID=-1, title="Main Fraim", pos = (50,50), size = (900,600))
        self.frame.Show()
        self.SetTopWindow(self.frame)
        self.Bind(wx.EVT_CLOSE, self.OnCloseWindow)
        return True

    def OnExit(self):
        print "OnExit"

    def OnCloseWindow(self, event):
        self.Destroy()
        

if __name__ == '__main__':
    app = MyApp(redirect=False)
    app.MainLoop()


А "redirect" указывает просто куда будет производиться вывод: при параметре redirect=False вывод будет в консоль, а при redirect=True в отдельное wxокно
PM MAIL   Вверх
Nashev
Дата 6.1.2008, 22:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 6.1.2008

Репутация: нет
Всего: нет



Я что-то не понял - у Вас в программе вписан один вызов окна, на инициализацию приложения  и средства в этой программе открыть окно второй раз я не вижу. О каком втором вызове окна идёт речь?
PM MAIL   Вверх
Increazon
Дата 14.9.2008, 11:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 29.10.2007

Репутация: нет
Всего: нет



Вопрос - при тестировании всех ваших кодов я получаю ошибку Traceback (most recent call last):
  File "C:\Program Files\Python25\Tools\Scripts\wx.py", line 9, in <module>
    import wx
  File "C:\Program Files\Python25\Tools\Scripts\wx.py", line 10, in <module>
    class MyFrame(wx.Frame):
AttributeError: 'module' object has no attribute 'Frame'

Но при запуске через Idle (всмысле если вводить все по строкам) - все работает.
PM MAIL   Вверх
Increazon
Дата 14.9.2008, 12:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 29.10.2007

Репутация: нет
Всего: нет



я нашел свою ошибку - wx.py - так я назвал свой скрипт, и когда вызывал модуль wx - области видимости путались и все глючило. вот дела господа программисты.

F:\Music\IxtoneMP3\05-Sonne (Instrumental).mp3
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Python: Разработка GUI | Следующая тема »


 




[ Время генерации скрипта: 0.0920 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.