[решено]wxPython нет модуля

Автор w.qazmju, 30 сентября 2016, 14:29:47

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

w.qazmju

во время работы скрипта возникает ошибка нет модуля wxPython
pip list говорит что он есть

скрипт решает эту проблему .. календарь рабочих смен (железнодорожный график)
сам скрипт ниже под спойлером скидывал на другой машине под цштвщцы  на портабном python ~е там работает.
Открыть содержимое (спойлер)

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# generated by wxGlade 0.6.5 (standalone edition) on Fri Sep 30 01:34:18 2016

from wxPython.wx import *
from wxPython.calendar import *
#import wxPython
import wx
import datetime


stat1 = ['1 утро', '2 отсыпной', '3 ночь', '4 выходной']
stat2 = ['1 ночь', '2 выходной', '3 отсыпной', '4 утро']
stat3 = ['1 отсыпной', '2 утро', '3 выходной', '4 ночь']
stat4 = ['1 выходной', '2 ночь', '3 утро', '4 отсыпной']
thisday = datetime.datetime.date(datetime.datetime.today())

# begin wxGlade: extracode
# end wxGlade
def initmeen(thisday):
    stat0 = [u'1 утро', u'2 отсыпной', u'3 ночь', u'4 выходной']
    stat1 = [u'1 ночь', u'2 выходной', u'3 отсыпной', u'4 утро']
    stat2 = [u'1 отсыпной', u'2 утро', u'3 выходной', u'4 ночь']
    stat3 = [u'1 выходной', u'2 ночь', u'3 утро', u'4 отсыпной']
    a = str(thisday)
    b = '1000-01-04'
    a = a.split('-')
    b = b.split('-')
    aa = datetime.date(int(a[0]),int(a[1]),int(a[2]))
    bb = datetime.date(int(b[0]),int(b[1]),int(b[2]))
    cc = aa-bb
    dd = str(cc)
    s = int(dd.split()[0])%4
    if s == 0 :
        return stat0
    elif s == 1 :
        return stat1
    elif s == 2 :
        return stat2
    elif s == 3 :
        return stat3



class MyFrame(wxFrame):
    def __init__(self, *args, **kwds):
        kwds["style"] = wxDEFAULT_FRAME_STYLE
        wxFrame.__init__(self, *args, **kwds)
        self.calendar_ctrl_1 = wxCalendarCtrl(self, -1, style=wxCAL_MONDAY_FIRST)
        self.panel_24 = wxPanel(self, -1)
        self.label_41 = wxStaticText(self, -1, initmeen(thisday)[0])
        self.label_42 = wxStaticText(self, -1, initmeen(thisday)[1])
        self.label_43 = wxStaticText(self, -1, initmeen(thisday)[2])
        self.label_44 = wxStaticText(self, -1, initmeen(thisday)[3])
        self.panel_23 = wxPanel(self, -1)
        self.button_2 = wxButton(self, -1, "button_2")

        self.__set_properties()
        self.__do_layout()

        EVT_CALENDAR_SEL_CHANGED(self, self.calendar_ctrl_1.GetId(), self.ev_cal_sel)

    def __set_properties(self):
        # begin wxGlade: MyFrame.__set_properties
        self.SetTitle("ShiftWorkCalendar")
        # end wxGlade

    def __do_layout(self):
        # begin wxGlade: MyFrame.__do_layout
        sizer_5 = wxFlexGridSizer(1, 2, 0, 0)
        sizer_7 = wxBoxSizer(wxVERTICAL)
        sizer_5.Add(self.calendar_ctrl_1, 0, 0, 0)
        sizer_7.Add(self.panel_24, 1, wxEXPAND, 0)
        sizer_7.Add(self.label_41, 0, 0, 0)
        sizer_7.Add(self.label_42, 0, 0, 0)
        sizer_7.Add(self.label_43, 0, 0, 0)
        sizer_7.Add(self.label_44, 0, 0, 0)
        sizer_7.Add(self.panel_23, 1, wxEXPAND, 0)
        sizer_7.Add(self.button_2, 0, 0, 0)
        sizer_5.Add(sizer_7, 1, wxEXPAND, 0)
        self.SetSizer(sizer_5)
        sizer_5.Fit(self)
        self.Layout()
        self.Centre()
        # end wxGlade

    def ev_cal_sel(self, event):  # wxGlade: MyFrame.<event_handler>
        thisday = str(self.calendar_ctrl_1.PyGetDate())
        #print thisday
        wx.Window.SetLabel(self.label_41, initmeen(thisday)[0])
        wx.Window.SetLabel(self.label_42, initmeen(thisday)[1])
        wx.Window.SetLabel(self.label_43, initmeen(thisday)[2])
        wx.Window.SetLabel(self.label_44, initmeen(thisday)[3])
        event.Skip()

# end of class MyFrame
class MyApp(wxApp):
    def OnInit(self):
        wxInitAllImageHandlers()
        frame_1 = MyFrame(None, -1, "")
        self.SetTopWindow(frame_1)
        frame_1.Show()
        return 1

# end of class MyApp

if __name__ == "__main__":
    app = MyApp(0)
    app.MainLoop()
[свернуть]

ps просьба ногами не бить это мой 3й скрипт на питоне
pps э... а както можно сделать ... этот скрипт портативным что ли



как понял согласно сообщениям гугла wxPython устаревшая библиотека и мол рекомендовано использовать библиотеку wx
переделал скрипт вроде работает (см.скрипт ниже)

Открыть содержимое (спойлер)
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
#
# generated by wxGlade 0.6.8 on Sat Oct  1 04:47:55 2016 from "/home/qwertyuiop/work/calendar.wxg"
#

import wx
import wx.calendar

# begin wxGlade: dependencies
import gettext
# end wxGlade

# begin wxGlade: extracode
# end wxGlade
import datetime

thisday = datetime.datetime.date(datetime.datetime.today())

def initmeen(thisday):
    stat0 = [u'1 утро', u'2 отсыпной', u'3 ночь', u'4 выходной']
    stat1 = [u'1 ночь', u'2 выходной', u'3 отсыпной', u'4 утро']
    stat2 = [u'1 отсыпной', u'2 утро', u'3 выходной', u'4 ночь']
    stat3 = [u'1 выходной', u'2 ночь', u'3 утро', u'4 отсыпной']
    a = str(thisday)
    b = '1000-01-04'
    a = a.split('-')
    b = b.split('-')
    aa = datetime.date(int(a[0]),int(a[1]),int(a[2]))
    bb = datetime.date(int(b[0]),int(b[1]),int(b[2]))
    cc = aa-bb
    dd = str(cc)
    s = int(dd.split()[0])%4
    if s == 0 :
        return stat0
    elif s == 1 :
        return stat1
    elif s == 2 :
        return stat2
    elif s == 3 :
        return stat3

class MyFrame(wx.Frame):
    def __init__(self, *args, **kwds):
        # begin wxGlade: MyFrame.__init__
        kwds["style"] = wx.DEFAULT_FRAME_STYLE
        wx.Frame.__init__(self, *args, **kwds)
        self.calendar_ctrl_1 = wx.calendar.CalendarCtrl(self, wx.ID_ANY, style=wx.calendar.CAL_MONDAY_FIRST)
        self.panel_24 = wx.Panel(self, wx.ID_ANY)
        self.label_41 = wx.StaticText(self, wx.ID_ANY, _(initmeen(thisday)[0]))
        self.label_42 = wx.StaticText(self, wx.ID_ANY, _(initmeen(thisday)[1]))
        self.label_43 = wx.StaticText(self, wx.ID_ANY, _(initmeen(thisday)[2]))
        self.label_44 = wx.StaticText(self, wx.ID_ANY, _(initmeen(thisday)[3]))
        self.panel_23 = wx.Panel(self, wx.ID_ANY)
        #self.button_2 = wx.Button(self, wx.ID_ANY, _("button_2"))

        self.__set_properties()
        self.__do_layout()

        self.Bind(wx.calendar.EVT_CALENDAR_SEL_CHANGED, self.ev_cal_sel, self.calendar_ctrl_1)
        # end wxGlade

    def __set_properties(self):
        # begin wxGlade: MyFrame.__set_properties
        self.SetTitle(_("ShftClndrWrk2"))
        # end wxGlade

    def __do_layout(self):
        # begin wxGlade: MyFrame.__do_layout
        sizer_5 = wx.FlexGridSizer(1, 2, 0, 0)
        sizer_7 = wx.BoxSizer(wx.VERTICAL)
        sizer_5.Add(self.calendar_ctrl_1, 0, 0, 0)
        sizer_7.Add(self.panel_24, 1, wx.EXPAND, 0)
        sizer_7.Add(self.label_41, 0, 0, 0)
        sizer_7.Add(self.label_42, 0, 0, 0)
        sizer_7.Add(self.label_43, 0, 0, 0)
        sizer_7.Add(self.label_44, 0, 0, 0)
        sizer_7.Add(self.panel_23, 1, wx.EXPAND, 0)
        #sizer_7.Add(self.button_2, 0, 0, 0)
        sizer_5.Add(sizer_7, 1, wx.EXPAND, 0)
        self.SetSizer(sizer_5)
        sizer_5.Fit(self)
        self.Layout()
        self.Centre()
        # end wxGlade

    '''def ev_cal_sel(self, event):  # wxGlade: MyFrame.<event_handler>
        print "Event handler 'ev_cal_sel' not implemented!"
        event.Skip()'''
    def ev_cal_sel(self, event):  # wxGlade: MyFrame.<event_handler>
        thisday = str(self.calendar_ctrl_1.PyGetDate())
        #print thisday
        wx.Window.SetLabel(self.label_41, initmeen(thisday)[0])
        wx.Window.SetLabel(self.label_42, initmeen(thisday)[1])
        wx.Window.SetLabel(self.label_43, initmeen(thisday)[2])
        wx.Window.SetLabel(self.label_44, initmeen(thisday)[3])
        event.Skip()

# end of class MyFrame
class MyApp(wx.App):
    def OnInit(self):
        wx.InitAllImageHandlers()
        frame_1 = MyFrame(None, wx.ID_ANY, "")
        self.SetTopWindow(frame_1)
        frame_1.Show()
        return 1

# end of class MyApp

if __name__ == "__main__":
    gettext.install("app") # replace with the appropriate catalog name

    app = MyApp(0)
    app.MainLoop()
[свернуть]