百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

wxPython库教程系列之图片:托盘图标和图片缩放、移动

myzbx 2025-05-03 15:40 5 浏览

1 概要:

=====

1.1 托盘图标设置

1.2 普通图片显示:原图显示,缩放显示,窗口与图片大小相互适应。

1.3 按钮图片设置

1.4 移动图片和zoom菜单按钮联动设置


2 托盘图标:

========

2.1 效果图

2.2 代码:

import wx
app = wx.App()
frame = wx.Frame(None, wx.ID_ANY, '托盘图标显示')

#ico和png格式均可以,但是大小推荐是32*32,我已经测试过≤500*500可以
tuopan_icon=wx.Icon('/home/xgj/Desktop/wxpython/2_image_wxpython/smile.png', wx.BITMAP_TYPE_ICO)
frame.SetIcon(tuopan_icon)
#等同于上面2行
#frame.SetIcon(wx.Icon('/home/xgj/Desktop/wxpython/2_image_wxpython/py.ico', wx.BITMAP_TYPE_ICO))

frame.Show(True)
app.MainLoop()

2 普通图片显示:

===========

2.1 图片:来自今日头条正版免费图库:赵丽颖。

2.2 代码:

import wx

app = wx.App()

#声明图片对象
#image = wx.Image('/home/xgj/Desktop/wxpython/2_image_wxpython/6.jpeg',wx.BITMAP_TYPE_JPEG)
#默认也可以
image = wx.Image('/home/xgj/Desktop/wxpython/2_image_wxpython/6.jpeg')

#图片缩放
portion = 0.5
w = image.GetWidth()*portion
h = image.GetHeight()*portion

'''
#原图大小显示
w = image.GetWidth()
h = image.GetHeight()
'''
image.Rescale(int(w),int(h))

#窗口大小是显示的图片大小
frame = wx.Frame(None,title="Show image!",pos=(0,0),size=(int(w),int(h)))
#定义画板
pnl = wx.Panel(frame)

#图片格式转换
mypic = image.ConvertToBitmap()
#显示图片
wx.StaticBitmap(pnl,bitmap=mypic,pos=(0,0))
#窗口显示
frame.Show(True)
app.MainLoop()

2.3 wx.Image()类说明:

调用bmp图片时,用wx.BITMAP_TYPE_BMP说明;

调用jpeg图片时,用wx.BITMAP_TYPE_JPEG说明;(jpg格式同此)

调用png图片时, 用wx.BITMAP_TYPE_PNG说明;

调用gif图片时, 用wx.BITMAP_TYPE_GIF 说明。

3 按钮图片设置:

============

3.1 按钮显示图片来源:

3.2 代码:讲解仔细,有两种代码,推荐后一种代码


'''
#picbutton.py

#图片按钮
#方法一:提前将图片大小调节好100×100

import wx

app = wx.App()

win=wx.Frame(None,size=(300,300))

bitmap1 = wx.Image("/home/xgj/Desktop/wxpython/2_image_wxpython/learn100.png",wx.BITMAP_TYPE_PNG).ConvertToBitmap()
bitmap2 = wx.Image("/home/xgj/Desktop/wxpython/2_image_wxpython/source100.png",wx.BITMAP_TYPE_PNG).ConvertToBitmap()

wx.BitmapButton(win,-1,bitmap1,pos=(40,20),size=(100,100))
wx.BitmapButton(win,-1,bitmap2,pos=(160,20),size=(100,100))

win.Show()
app.MainLoop()

'''


#方法二:调用wx.Rescale函数,调节图片大小与按钮大小一致
import wx

app = wx.App()

#窗口设置
#win=wx.Frame(None,size=(300,300))
#标题名加入后,一定要前面加:-1
win=wx.Frame(None,-1,'按钮图片设置',size=(300,300))

bitmap1 = wx.Image("/home/xgj/Desktop/wxpython/2_image_wxpython/learn.jpeg",wx.BITMAP_TYPE_JPEG)
#resize是不正确的调节图片大小
#bitmap1.Resize(size=(100,100),pos=(0,0),red=-1, green=-1, blue=-1)

#rescale才是调节图片大小
#bitmap1.Rescale(width=100, height=100, quality=wx.IMAGE_QUALITY_NORMAL)
bitmap1.Rescale(width=100, height=100)
bt1=bitmap1.ConvertToBitmap()

bitmap2 = wx.Image("/home/xgj/Desktop/wxpython/2_image_wxpython/source.jpeg",wx.BITMAP_TYPE_JPEG)
#bitmap2.Resize(size=(100,100),pos=(0,0),red=-1, green=-1, blue=-1)
#bitmap2.Rescale(width=100, height=100, quality=wx.IMAGE_QUALITY_NORMAL)
bitmap2.Rescale(width=100, height=100)
bt2=bitmap2.ConvertToBitmap()

#把图片放在按钮上
wx.BitmapButton(win,-1,bt1,pos=(40,20),size=(100,100))
wx.BitmapButton(win,-1,bt2,pos=(160,20),size=(100,100))

win.Show()
app.MainLoop()

3.3 效果图

4 移动图片和zoom菜单联动设置:

=========================

4.1 效果图:

4.2 代码:

import wx
from wx.lib.floatcanvas import NavCanvas, FloatCanvas

TestFileName = "/home/xgj/Desktop/wxpython/2_image_wxpython/6.jpeg"

class DrawFrame(wx.Frame):
    def __init__(self, *args, **kwargs):
        wx.Frame.__init__(self, *args, **kwargs)
        #增加状态栏
        self.CreateStatusBar()
        # Add the Canvas
        #画布大小,背景颜色设置
        NC = NavCanvas.NavCanvas(self,-1,size = (500,500),BackgroundColor = "Pink")
        self.Canvas = NC.Canvas
        #加载函数读取图片
        self.LoadGirl(TestFileName)
        #移动数据坐标绑定,显示在状态栏下面
        self.Canvas.Bind(FloatCanvas.EVT_MOTION, self.OnMove )
        #展示
        self.Show()
        self.Canvas.ZoomToBB()
    
    #加载图片函数
    def LoadGirl(self, filename):
        Image = wx.Image(filename)
        self.Canvas.AddScaledBitmap(Image, (0,0), Height = Image.GetSize()[1], Position = "tl")
        #画点和文字显示
        self.Canvas.AddPoint((0,0), Diameter=3)
        self.Canvas.AddText("(0,0)", (-10,20), Position="cl")
        
        #获取图片大小列表中0代表宽,1代表高
        p = (Image.GetSize()[0],-Image.GetSize()[1])
        self.Canvas.AddPoint(p, Diameter=3)
        self.Canvas.AddText("(%i,%i)"%p, p, Position="cl")
        #图片缩放大小设置
        self.Canvas.MinScale = 0.15
        self.Canvas.MaxScale = 1.0
    
    #移动坐标数据函数
    def OnMove(self, event):
        #在状态栏显示
        self.SetStatusText("%.2f, %.2f"%tuple(event.Coords))

app = wx.App(False)
F = DrawFrame(None, title="FloatCanvas Show Girl", size=(700,700) )
app.MainLoop()

===未完待续===

相关推荐

Luminati代理动态IP教程指南配置代理VMLogin中文版反指纹浏览器

介绍如何使用在VMLogin中文版设置Luminati代理。首先下载VMLogin中文版反指纹浏览器(https://cn.vmlogin.com)对于刚接触Luminati动态ip的朋友,是不是不懂...

文档中图形及子图形的处理(word中的图形对象有何特点)

【分享成果,随喜正能量】走得越远,见识越多,认识的人越多,你就越能体会到,人这一辈子,你真的在意的,同时又在意你的人,就那么几个,这几个人,就是你全部的世界。三两知己,爱人在侧,父母康健,听起来平淡无...

Python爬虫破解滑动验证码教程(python绕过滑动验证码)

破解滑动验证码通常需要结合图像识别和模拟人类操作,以下是分步骤的解决方案:1.分析验证码类型缺口识别型:背景图带缺口,滑块图带凸块轨迹验证型:除了位置还需模拟人类移动轨迹2.获取验证码图片方法一:...

「教程」5 分钟带你入门 kivy(新手kp教学)

原创:星安果AirPythonkivy语言通过编写界面UI,然后利用Python定义一些业务逻辑,可以移植很多功能模块到移动端直接执行。下面对kivy常见用法做一个汇总。1、什么是...

比呀比: Fossil Estate Canvas EW 男式复古邮差包 $70.99

Fossil是一个来自美国的全球性生活时尚品牌,始建于1984年,专注于时尚配件,是第一个将手表的价值与款式完美结合的美国品牌,如今Fossil已跃身成为美国最受欢迎的品牌之一。这款FossilE...

智能教学:如何在网上授课(网上授课怎么弄)

摘要:因为担心传统课堂可能会传播冠状病毒,许多大学已经开始在网上授课。耶鲁-新加坡国立大学的讲师凯瑟琳·谢伊·桑格(CatherineSheaSanger)解释了如何快速而有效地做到这一点。当新型冠...

wxPython库教程系列之图片:托盘图标和图片缩放、移动

1概要:=====1.1托盘图标设置1.2普通图片显示:原图显示,缩放显示,窗口与图片大小相互适应。1.3按钮图片设置1.4移动图片和zoom菜单按钮联动设置2托盘图标:========2...

UE4渲染目标开发教程(ue4渲染效果图质量怎么样)

渲染目标(RenderTarget)是你可以在运行时写入的纹理。在引擎方面,它们存储基础颜色、法线和环境光遮蔽等信息。在用户方面,渲染目标主要用作一种辅助相机。你可以将场景捕捉指向某物并将图像存储到...

比呀比: Fossil 化石 Canvas NS 男士复古帆布斜挎包 $57.59

FossilCanvasNS男士复古帆布斜挎包,尺寸约为26.5*11*33厘米。采用100%纯棉帆布面料,融合了休闲与百搭的外形,在经典的款型呈现复古质感。内设1个拉链袋,2个搭扣数码产品袋和...

比呀比: Timberland 添柏岚 Canvas Cord Case 帆布旅行手包 $5.99

Timberland添柏岚这款耐用帆布旅行手包,虽然一眼过去,觉得不咋地,但是品牌和质量还是妥妥滴,非常适合装一些零零碎碎的小东西,便于携带,多色可选,重点是价格更是感动价啊。目前这款包在6pm报价...

提炼文章/知识资料,两键转换成小红书图片

现在AI的功能已经越来越强大了,通过AI可以提高我们不少工作效率。刚好前几天做了一个几乎“一气呵成”,把长文章转成小红书卡片的流程Demo,分享给大家。之前发过两篇利用AI把长文章转成小红书图片...

python海龟绘图turtle(一):画布和窗体

海龟绘图(turtle)是python的一个有趣的内置模块,是python语言的标准库之一,是入门级的图形绘制函数库。海龟绘图(turtle)可以根据编写的控制指令(代码),让一个小“海龟”在屏幕上来...

在文档中添加画布及图片(word中如何添加画布)

【分享成果,随喜正能量】宁可正而不足,不可邪而有余。相识满天下,知心能几人。书七成,戏三分,牛皮灯影胡编成。布施不如还债,修福不如避祸。勿以恶小而为之,勿以善小而不为。。《VBA之Word应用》,是我...

知识管理神器 Obsidian,终于有了白板功能!

沙牛提示阅读本文需要3分钟,Obsidian白板功能来了!如果你喜欢本文,就分享给你的小伙伴!01白板继双链笔记之后,这一年,白板类工具开始火了起来。顾名思义,白板类工具,它给了你一张无限尺寸...

虚拟背景第一弹!教你如何在家中优雅地“学在交大”!

交大将于3月2日正式开始线上教学(3月1日举行线上教学第一课|视频直播课)目前正处于网课试课阶段交大在线课程教学以ZOOM、Canvas等作为主平台平台的虚拟背景功能可以具特别的环境效果更好地沉浸课堂...