I think that you should modify self.length instead of self.width. IIRC self.width is just an info of what the width should be (fixed value or calculated), but the bar reserves a space of self.length when drawing its widgets. Also, I think there is no need to use self.draw(), self.bar.draw redraws all widgets by calling their draw() method.
Le dim. 22 nov. 2020 à 18:31, elParaguayo <[email protected]> a écrit : > I'm starting a new widget from scratch and am having some issues. > > I need the size to be variable so I'm using bar.CALCULATED for the width > and then have a calculate_length function to provide the relevant width. > > However, it's just not resizing when the width changes. I think this just > comes down to a lack of understanding about how the different draw > functions work. > > Here's a minimal example that's not working for me: > > class WidgetBox(base._Widget): > orientations = base.ORIENTATION_HORIZONTAL > defaults = [] > > def __init__(self, **config): > base._Widget.__init__(self, bar.CALCULATED, **config) > self.add_defaults(WidgetBox.defaults) > self.box_is_open = False > > self.add_callbacks({'Button1': self.open_box}) > > def _configure(self, qtile, bar): > base._Widget._configure(self, qtile, bar) > > self.layout = self.drawer.textlayout( > "*", > "ffffff", > "sans", > 20, > None, > markup=True, > ) > > def calculate_length(self): > if not self.box_is_open: > return 50 > else: > return 100 > > def draw(self): > self.drawer.clear(self.background or self.bar.background) > self.layout.draw(0, > int(self.bar.height / 2.0 - > self.layout.height / 2.0) + 1) > > self.drawer.draw(offsetx=self.offsetx, width=self.width) > > def open_box(self): > logger.info("Opening widget box...") > self.box_is_open = not self.box_is_open > logger.info("Width: {}".format(self.width)) > self.draw() > self.bar.draw() > > > I can see that the width is changed by looking at the logs but the widget > itself doesn't change size. What have I missed? > > Also, is there no way to do code formatting on google groups? monospace > font? > > -- > You received this message because you are subscribed to the Google Groups > "qtile-dev" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To view this discussion on the web visit > https://groups.google.com/d/msgid/qtile-dev/f89df5dd-9b7d-4be0-97a8-903dcce61493n%40googlegroups.com > <https://groups.google.com/d/msgid/qtile-dev/f89df5dd-9b7d-4be0-97a8-903dcce61493n%40googlegroups.com?utm_medium=email&utm_source=footer> > . > -- You received this message because you are subscribed to the Google Groups "qtile-dev" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/qtile-dev/CA%2BAViV-%3D-%2By2bQy%2Bo6Sa71xy85T2xEaQOPav_UskBZ7QhGcMbw%40mail.gmail.com.
