我正在尝试使用wxpython
的位图在main.py中我有:
imag=wx.Image("picture.bmp",wx.BITMAP_TYPE_BMP).ConvertToBitmap()
picture.bmp与main.py在同一个文件夹中, 该程序在IDE中运行时可以正常工作
当我制作一个exe时,它不起作用。
当我运行cx_freeze创建的exe时,我会弹出一个cmd框并显示:
wxBitmap CreatefromImage(): invalid image
答案 0 :(得分:1)
使用此方法
import imp
import os
import sys
def main_is_frozen():
return (hasattr(sys, "frozen") or # new py2exe
hasattr(sys, "importers") # old py2exe
or imp.is_frozen("__main__")) # tools/freeze
def get_main_dir():
if main_is_frozen():
return os.path.dirname(sys.executable)
return os.path.dirname(sys.argv[0])
使用此代码获取图像路径
imag=wx.Image(get_main_dir()+"/picture.bmp",wx.BITMAP_TYPE_BMP).ConvertToBitmap()
答案 1 :(得分:1)
我使用方法大纲here执行此操作。
基本上,这使用from wx.tools import img2py
将图像转换为.py
文件中的字符串。然后,可以使用此from wx.lib.embeddedimage import PyEmbeddedImage
文件顶部的.py
将这些字符串作为位图读取。
这样,图像就可以像普通的Python文件一样处理。
例如,在wxPython演示的images.py
文件中,前几行看起来像
from wx.lib.embeddedimage import PyEmbeddedImage
Mondrian = PyEmbeddedImage(
"iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABHNCSVQICAgIfAhkiAAAAHFJ"
"REFUWIXt1jsKgDAQRdF7xY25cpcWC60kioI6Fm/ahHBCMh+BRmGMnAgEWnvPpzK8dvrFCCCA"
"coD8og4c5Lr6WB3Q3l1TBwLYPuF3YS1gn1HphgEEEABcKERrGy0E3B0HFJg7C1N/f/kTBBBA"
"+Vi+AMkgFEvBPD17AAAAAElFTkSuQmCC")
这是一张看起来像蒙德里安画的小图片。
答案 2 :(得分:0)
好像你有2种不同的程序运行方式,每种方式都有不同的工作文件夹。您是否尝试过提供picture.bmp文件的完整绝对路径?
imag=wx.Image("C:/this/that/theother/picture.bmp",wx.BITMAP_TYPE_BMP).ConvertToBitmap()