Вставка изображения под ползунками в wxPython - PullRequest
0 голосов
/ 26 сентября 2019

Я хочу иметь изображение под слайдером в графическом интерфейсе wxpython.Текст спрашивает "Какова стоимость?"и я хочу иметь изображение значения (например, 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, также будут оценены.

1 Ответ

0 голосов
/ 27 сентября 2019

Просто добавьте изображение на панель в нужном месте или начните использовать 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

Отредактировано для отображения нескольких изображений на основе значения ползунка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...