2012-04-27 10 views
0

Я пытаюсь сделал немного графики с хорошим цветовым градиентом и текстИспользуйте функцию WxPython DrawText, чтобы добавить текст в растр

градиент цвета теперь работает нормально (только тестирование так код все еще грязный) но текст не отображается

Может кто-нибудь, пожалуйста, скажите мне, что случилось с моим кодом?

#!/usr/bin/python 
# -*- coding: utf-8 -*- 
""" 
Created on Tue Apr 24 13:31:18 2012 

@author: ksr 
""" 
import os 
import scipy 
import pickle 
import shutil 
import matplotlib.pyplot as plt 
from os.path import join as opj 
from os import getcwd as cwd 
from os import listdir as ld 
import wx 

def dec2hex(n): 
"""return the hexadecimal string representation of integer n""" 
return "%X" % n 

def hex2dec(s): 
    """return the integer value of a hexadecimal string s""" 
    return int(s, 16) 

def main(text): 

    app   = wx.PySimpleApp() 

    # Bitmap und DC (Device Context) erstellen 
    bitmap  = wx.EmptyBitmap(width = 500, height = 500) 
    dc   = wx.MemoryDC(bitmap) # Dieser DC zeichnet nur im Speicher 

    # Hintergrund gelb ausmalen 
    dc.SetBackground(wx.Brush('#FFFFFF', wx.SOLID)) 
    dc.Clear() 

    # GraphicsContext erstellen (damit sehen die Bilder besser aus) 
    gc = wx.GraphicsContext_Create(dc) 

    x = 0 
    y = 0 
    far = 0 
    z = 0 
    for i in range(0,2001): 

     if z%5 == 0 and i < 1000: 
      far += 1 
      z = 0 
     elif z%5 == 0 and i > 1000: 
      far -= 1 
      z = 0 
     farbe = dec2hex(far) 


     # Grünen Stift zuweisen 
     pen = wx.Pen("#%s0000"%(str(farbe.rjust(2,'0'))), 2, wx.SOLID)#,str(farbe.rjust(2,'0')) 
     gc.SetPen(pen) 

     # Zwei horizontale Linien zeichnen 
     gc.DrawLines(((x, y), (256, 256))) 

     print x,y,farbe.rjust(2,'0'),i 

     if x < 500 and y == 0: 
      x+=1 

     elif x == 500 and y < 500: 
      y+=1 

     elif y == 500 and x > 0: 
      x-=1 

     elif x == 0 and y > 0: 
      y-=1 
     z+=1  

    gc.DrawText('Hello',100,100)  

    # Bitmap vom DC abtrennen und als PNG speichern 
    dc.SelectObject(wx.NullBitmap) 
    bitmap.SaveFile("new_image.png", wx.BITMAP_TYPE_PNG) 


if __name__ == "__main__": 
    main() 

ответ

0

Когда я запускаю свой код, я получил сообщение об ошибке, как там шрифт не определен, я не знаю, если вы испытываете такую ​​же проблему, но при добавлении любого SetFont заявление как gc.SetFont(wx.Font(22, wx.SWISS, wx.NORMAL, wx.BOLD)) перед тем DrawText ваш код работает хорошо.

Кстати, я положил 300, 300 в качестве координат, чтобы нарисовать текст «Hello», как в 100, 100, он немного черный на черном и нечитабельный.

+0

спасибо! У меня никогда не было таких ошибок, как вы. Его немного запутывает, поэтому не могли бы вы рассказать, пожалуйста, какую среду программирования вы используете? (Я использую Spyder под ubuntu 10.04) –

+0

Я использую [PyScripter] (http://code.google.com/p/pyscripter/) на Windows, запуск удаленного Python движка для Wx. – Boud

+0

Я был бы удивлен, что вы каким-то образом не получили Traceback. Разве это не отображается на выходе IDE где-то? Его можно было поймать, отобразить, а затем заставить wx продолжать работать с следующей инструкцией. – Boud