Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » GUI
  • » фон картинки при использовании BitmapButton and Image [RSS Feed]

#1 Ноя. 11, 2011 08:28:45

Piton23
От:
Зарегистрирован: 2011-10-17
Сообщения: 139
Репутация: +  5  -
Профиль   Отправить e-mail  

фон картинки при использовании BitmapButton and Image

Привет всем, есть один косяк с BitmapButton, я беру картинку, вставляю ее в BitmapButton, и почему то не прорисовывается сразу вон.

Сначала авторизация, после успешной авторизации, закрывается окно и создается 3 панели разбросанные по соответствующим сайзерам. В одном из сайзере и добавляются эти картинки. Вот картинки и код.

# -*- coding: cp1251 -*-

import wx
import ini
import model
import time
transition = ""

class StatusPanel(wx.Panel):
def __init__(self, parent, ID=-1, label="", pos=wx.DefaultPosition, size=(140, 30)):
wx.Panel.__init__(self, parent, ID, pos, size, wx.NO_BORDER, label)

bmp = wx.Image(ini.statusImage[label], wx.BITMAP_TYPE_ANY).ConvertToBitmap()
self.button = wx.BitmapButton(self, -1, bmp, style=0)

class InfoPanel(wx.Panel):
def __init__(self, parent, ID=-1, label="", pos=wx.DefaultPosition, size=(140, 30)):
wx.Panel.__init__(self, parent, ID, pos, size, wx.NO_BORDER, name=label)
self.SetBackgroundColour('#993399')

static = wx.StaticText(self, -1, "Information panel", pos=(0, 0))

class MainPanel(wx.Panel):
def __init__(self, parent, ID=-1, label="", pos=wx.DefaultPosition, size=(400,25)):
wx.Panel.__init__(self, parent, ID, pos, size, wx.NO_BORDER)
self.SetBackgroundColour('#CCFF99')

gridsizer = wx.GridSizer(ini.rowsMain, ini.colsMain)

#staticbox0 = wx.StaticBox(self, wx.NewId(), label="Функционал")
#sizer_hor = wx.StaticBoxSizer(staticbox0, wx.HORIZONTAL)

countImages = len(ini.mainFunctionImages)
max = ini.colsMain * 1 + 1
#мб что рисунков больше max
if countImages > max: max = countImages
print "countImages=" + str(countImages) + ", and max=" + str(max)
for n in range(countImages):
print "add image in [" + str(n) + "]"
bmp = wx.Image(ini.mainFunctionImages[n], wx.BITMAP_TYPE_ANY).ConvertToBitmap()
self.button = wx.BitmapButton(self, -1, bmp, style=0)
self.button.SetBackgroundColour('#CCFF99')
gridsizer.Add(self.button, flag=wx.EXPAND)
if max > countImages:
for m in range(n+1, max):
print "add null in [" + str(m) + "]"
btn = wx.StaticText(self, -1, "")
#btn = wx.Button(self, id=wx.NewId(), label="" + str(n), style=0)
#btn.SetBackgroundColour('#CCFF99')
gridsizer.Add(btn, flag=wx.EXPAND)




self.SetSizer(gridsizer)
self.Layout()

class AutorizationFrame(wx.MDIParentFrame):
def __init__(self, parent=None, ID=-1, label="", size=(255,100), pos=(0,0)):
print "in init AutorizationFrame, type(self)=" + str(type(self))
self.parent = parent
self.win = wx.MDIChildFrame(parent, ID, label, size = size, pos = pos)
self.win.SetBackgroundColour('#CCFF99')


panel = wx.Panel(self.win, -1)
textLogin = wx.StaticText(panel, -1, "Логин:", pos=(5, 5))
self.ctrlLogin = wx.TextCtrl(panel, -1, "", size=(80, -1), pos=(50,3))
self.ctrlLogin.SetBackgroundColour('#CCFF99')
self.ctrlLogin.SetInsertionPoint(0)
textPwd = wx.StaticText(panel, -1, "Пароль:", pos=(5, 31))
self.ctrlPwd = wx.TextCtrl(panel, -1, "", size=(80, -1), pos=(50, 29), style=wx.TE_PASSWORD)
self.ctrlPwd.SetBackgroundColour('#CCFF99')
self.button = wx.Button(panel, -1, "Зайти", pos=(155, 28))
self.button.SetBackgroundColour('#CCFF99')
self.response = wx.StaticText(panel, -1, "", pos=(5, 55))

self.button.Bind(wx.EVT_BUTTON, self.OnClick)

self.win.Show(True)

def OnClick(self, event):
# Логин и пароль обрезается до 10 если превышает это значение
self.response.SetLabel("")
login = self.ctrlLogin.GetValue()
password = self.ctrlPwd.GetValue()
if (len(login) > 10): login = login[:10]
if (len(password) > 10): password = password[:10]
if not len(login):
self.response.SetLabel("Вы не ввели логин")
return 1
elif not len(password):
self.response.SetLabel("Вы не ввели пароль")
return 1
res = model.autorization(login, password)
if not res:
self.response.SetLabel("Ошибка ввода, проверьте и попробуйте снова")
return 2
else:
self.response.SetLabel("Можно заходить")
global transition
transition = login
if login == 'sa': status = 'admin'
else: status = 'user'
self.parent.doLayout(status)
self.parent.Refresh()
self.win.Close()



class MainWindow(wx.MDIParentFrame):
def __init__(self, *args, **kwds):
global transition
kwds["style"] = wx.DEFAULT_FRAME_STYLE ^(wx.MAXIMIZE_BOX | wx.RESIZE_BORDER)
wx.MDIParentFrame.__init__(self, *args, **kwds)
self.SetSize((540, 300))
self.SetIcon(wx.Icon(ini.imageIcon, wx.BITMAP_TYPE_PNG))
self.SetLabel('подсистема печати матричного принтера')
self.temp = "asd"
self.win = AutorizationFrame(self, -1, "авторизация", size = (255,100), pos = (140, 80))


#self.doLayout()

self.Centre()

def doLayout(self, status):
mainSizer = wx.BoxSizer(wx.HORIZONTAL)
leftSizer = wx.BoxSizer(wx.VERTICAL)

PanelStatus = StatusPanel(self, wx.NewId(), status)
PanelInfo = InfoPanel(self, wx.NewId(), status)
PanelMain = MainPanel(self, wx.NewId(), status)

leftSizer.Add(PanelStatus, flag = wx.EXPAND)
leftSizer.Add(PanelInfo, proportion = 1, flag = wx.EXPAND)
mainSizer.Add(leftSizer, flag = wx.EXPAND)
mainSizer.Add(PanelMain, proportion = 1, flag = wx.EXPAND)

self.SetSizer(mainSizer)
self.Layout()

def main():
global transition
app = wx.PySimpleApp(0)
wx.InitAllImageHandlers()
mainWnd = MainWindow(None, -1, "")
print "out MainWindow.win=" + str(mainWnd.win) + ", and type(MainWindow.win)=" + str(type(mainWnd.win))
app.SetTopWindow(mainWnd)
mainWnd.Show()
print "end autorization"
app.MainLoop()
print "end"

if __name__ == "__main__":
main()
Картинки Не догнал я как сюда вставить картинку не используя внешние ресурсы, так что как то так.

PS: Фон нормально рисуется когда (сворачиваю-разворачиваю) или поверх окна другие окна и затем снова фокус на прогу (в общем третий рисунок). Но я хочу чтобы он сразу появлялся прорисованным минуя второй, после авторизации

Отредактировано (Ноя. 11, 2011 09:32:54)

Офлайн

  • Начало
  • » GUI
  • » фон картинки при использовании BitmapButton and Image[RSS Feed]

Board footer

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

Powered by DjangoBB

Lo-Fi Version