在wxPython的滑块下插入图像

2024-07-05 10:54:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我想在wxpythongui的滑块下面有一个图像。文本询问“值是多少?”我想在滑块下面有一个值的图片(例如35),并且有不同的图像,这些图像会随着您的浏览而改变

我研究过这个问题,但只找到了使图像成为整个背景的方法,而不是出现在面板中

import wx

class MyPanel(wx.Panel):
    def __init__(self, parent, id):
        wx.Panel.__init__(self, parent, id)
        self.SetBackgroundColour("white")
        text1 = wx.StaticText(self, -1, "What is the value", (10,10))
        self.slider1 = wx.Slider(self, -1, 50, 0, 100, (10, 40), (200, 50),
            wx.SL_HORIZONTAL | wx.SL_AUTOTICKS | wx.SL_LABELS)
        self.Bind(wx.EVT_SLIDER, self.sliderUpdate)

    def sliderUpdate(self, event):
        self.pos1 = self.slider1.GetValue()
        if self.pos1 == 35:
            box = wx.MessageDialog(None, "BINGO!", "Title", wx.OK)
            box.ShowModal()

app = wx.App()
frame = wx.Frame(None, -1, "Title", size = (400, 310))
MyPanel(frame,-1)
frame.Show(True)
app.MainLoop()

此外,我不知道如何创建多个页面切换底部的图片,并有一个提交按钮,检查是否正确,然后再继续

任何文学或视频,你可以指给我更好地学习wxpython以及将不胜感激


Tags: 图像selfidinitdef图片frameparent
1条回答
网友
1楼 · 发布于 2024-07-05 10:54:42

只需将图像添加到面板的所需位置或开始使用sizers
我添加了一些快速的PIL代码来生成一个数字或文本的图像,这样您就可以根据需要动态生成图像,尽管我将其作为一个全局实例。你可能想把它变成一个函数

import wx
from PIL import Image, ImageDraw
temp_img=[]
for i in range(101):
    img = Image.new('RGB', (100,30))
    d = ImageDraw.Draw(img)
    d.text((10,10), str(i))
    width, height = img.size
    temp_img.append(wx.Bitmap.FromBuffer(width, height, img.tobytes()))

class MyPanel(wx.Panel):
    def __init__(self, parent, id):
        wx.Panel.__init__(self, parent, id)
        self.SetBackgroundColour("white")
        text1 = wx.StaticText(self, -1, "What is the value", (10,10))
        self.slider1 = wx.Slider(self, -1, 50, 0, 100, (10, 40), (200, 50),
            wx.SL_HORIZONTAL | wx.SL_AUTOTICKS | wx.SL_LABELS)
        self.bmp = wx.StaticBitmap(self, -1, bitmap=temp_img[50], pos=(10,100))
        self.Bind(wx.EVT_SLIDER, self.sliderUpdate)

    def sliderUpdate(self, event):
        self.pos1 = self.slider1.GetValue()
        self.bmp.SetBitmap(temp_img[self.pos1])
        if self.pos1 == 35:
            box = wx.MessageDialog(None, "BINGO 35!", "Title", wx.OK)
            box.ShowModal()

app = wx.App()
frame = wx.Frame(None, -1, "Title", size = (400, 310))
MyPanel(frame,-1)
frame.Show(True)
app.MainLoop()

enter image description here

编辑以基于滑块值显示多个图像

相关问题 更多 >