Changing middleText of Speedometer
Tanmay Agrawal <[email protected]> Mon, 29 Aug 2022 10:34:47 +0530
| Newsgroups | gmane.comp.python.wxglade |
|---|---|
| Message-ID | <CALF8AQPVPaL_zJGq0+EnD+gxnz-bfnKrt6K2L9mpPiNMO-QPhw@mail.gmail.com> |
Hi, I'm trying to change the Value of the MiddleText of the speedometer to the value that the tick of the speedometer points to. I am changing the value of the tick of the speedometer via SetSpeedalue, but when I try to change the middleText via SetMiddleText(), the tick mark disappears, and no value is shown in the middle. What can I do to solve this issue? Attaching the code for your reference. (In the code, I have used an OnMouse function for testing, but actually the value of Speedometer is changed via some other data.) Thanks Regards, Tanmay _______________________________________________ wxGlade-general mailing list wxGlade-general-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org https://lists.sourceforge.net/lists/listinfo/wxglade-general
test.py
(text/x-python, 2.9 KB)
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
#
# generated by wxGlade 0.8.0a9 on Mon Nov 20 23:05:27 2017
#
import wx
# begin wxGlade: dependencies
# end wxGlade
# begin wxGlade: extracode
import wx.lib.agw.speedmeter as SM
# import these on module level to use them in the Extra Properties
from math import pi, sqrt
# end wxGlade
class MyFrame(wx.Frame):
def __init__(self, *args, **kwds):
# begin wxGlade: MyFrame.__init__
kwds["style"] = kwds.get("style", 0) | wx.DEFAULT_FRAME_STYLE
wx.Frame.__init__(self, *args, **kwds)
self.SetSize((400, 349))
self.SetTitle("wx.lib.agw.speedmeter example")
sizer_1 = wx.BoxSizer(wx.VERTICAL)
self.panel_1 = wx.Panel(self, wx.ID_ANY)
sizer_1.Add(self.panel_1, 1, wx.EXPAND, 0)
sizer_2 = wx.BoxSizer(wx.VERTICAL)
self.speed_meter = SM.SpeedMeter(self.panel_1, wx.ID_ANY, agwStyle=SM.SM_DRAW_HAND | SM.SM_DRAW_SECTORS | SM.SM_DRAW_MIDDLE_TEXT | SM.SM_DRAW_SECONDARY_TICKS)
# see also extra properties
intervals = list(range(0, 201, 20))
self.speed_meter.SetIntervals(intervals)
self.speed_meter.SetIntervalColours([wx.BLACK]*10)
ticks = [str(interval) for interval in intervals]
self.speed_meter.SetTicks(ticks)
self.speed_meter.DrawExternalArc(False)
#################################################################
self.speed_meter.SetAngleRange(-pi/6, 7*pi/6)
self.speed_meter.SetHandColour(wx.Colour(255, 50, 0))
self.speed_meter.SetIntervalColours([wx.BLACK]*10)
self.speed_meter.SetMiddleText("Km/h")
self.speed_meter.SetMiddleTextColour(wx.WHITE)
self.speed_meter.SetMiddleTextFont(wx.Font(8, wx.FONTFAMILY_SWISS, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_BOLD))
self.speed_meter.SetSpeedValue(44)
self.speed_meter.SetTicksColour(wx.WHITE)
self.speed_meter.SetTicksFont(wx.Font(10, wx.FONTFAMILY_SWISS, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL))
sizer_2.Add(self.speed_meter, 1, wx.ALL | wx.EXPAND, 3)
self.speed_meter.Bind(wx.EVT_MOUSE_EVENTS, self.OnMouse)
self.speed_meter.SetToolTip(wx.ToolTip("Drag the speed dial to change the speed!"))
self.panel_1.SetSizer(sizer_2)
self.SetSizer(sizer_1)
self.Layout()
# end wxGlade
def OnMouse(self, event):
speed = event.GetEventObject()
self.speed_meter.SetMiddleText(speed.GetSpeedValue())
event.Skip()
# end of class MyFrame
class MyApp(wx.App):
def OnInit(self):
self.frame = MyFrame(None, wx.ID_ANY, "")
self.SetTopWindow(self.frame)
self.frame.Show()
return True
# end of class MyApp
if __name__ == "__main__":
app = MyApp(0)
app.MainLoop()