FLET:对滑块控件中的值进行数学运算

问题描述 投票:0回答:1

我有具体问题,但我不明白如何解决它:/

来源:FLET 滑块示例

import flet as ft

def main(page):

    def slider_changed(e):
        t.value = f"Slider changed to {e.control.value}"
        page.update()

    t = ft.Text()
    page.add(
        ft.Text("Slider with 'on_change' event:"),
        ft.Slider(min=0, max=100, divisions=10, label="{value}%", on_change=slider_changed), t)

ft.app(main)

Value label 工作正常,但在我的项目中,我需要对该值应用数学运算(除法)。

label="{value}%"
可能是字符串,但是当我尝试将其转换为int时,调试器显示错误
ValueError: invalid literal for int() with base 10

请问我如何划分价值,然后显示为标签?

python flutter flet
1个回答
0
投票
import flet as ft

def main(page):
    def slider_changed(e):
        #Store value to perform mathematical opreations on first
        slider_value = e.control.value
        # then divide slider value by an integer
        result = slider_value / 10
        #update both text and slider conntrol with result
        t.value = f"Slider value divided by 10 = {result}"
        my_slider.label = f"{result}%"
        page.update()

    t = ft.Text()
    my_slider = ft.Slider(min=0, max=100, divisions=10, label="{value}%", 
    on_change=slider_changed)

    page.add(
        ft.Text("Slider with 'on_change' event:"),
        my_slider, t)
    #print(my_slider.label)

ft.app(main)

来自 Flet Slider 文档

”标签: 使用 {value} 格式化。 当滑块处于活动状态时显示在滑块上方的标签。标签的值可能包含 {value} ,它将被替换为当前滑块值。 它用于显示离散滑块的值,并显示为值指示器形状的一部分。 如果未设置,则不会显示值指示器。”

这意味着标签仅用作滑块值的显示。您不能像您想要的那样将其类型转换为整数。 实现您想要的效果的一个好方法是直接对滑块值执行数学运算并将其更新到任何 flet 控件,在您的情况下是文本和滑块标签。这样,对滑块的任何更改都会更新。 我希望这能解决您的问题?

© www.soinside.com 2019 - 2024. All rights reserved.