无法设置Flet下拉框的值

0 投票
1 回答
61 浏览
提问于 2025-04-14 15:56

我无法设置下拉菜单的值。我正在使用flet网站上的一个示例。设置值的唯一方法是往下拉菜单里添加一些选项。但是我想要的是在没有选择任何选项的情况下直接设置值。谢谢!

import flet as ft

def main(page: ft.Page):
    def find_option(option_name):
        for option in d.options:
            if option_name == option.key:
                return option
            return None

    def add_clicked(e):
        d.value = "test"
        page.update()
    
    def delete_clicked(e):
        option = find_option(d.value)
        if option != None:
            d.options.remove(option)
            # d.value = None
            page.update()

d = ft.Dropdown()
option_textbox = ft.TextField(hint_text="Enter item name")
add = ft.ElevatedButton("Add", on_click=add_clicked)
delete = ft.OutlinedButton("Delete selected", on_click=delete_clicked)
page.padding = 50
page.add(d, ft.Row(controls=[option_textbox, add, delete]))

ft.app(target=main)

1 个回答

0

flet.Dropdown 需要在 'options' 列表中包含 flet.dropdown.Option,且这些选项的值要和你想要设置的值一致。

这里有个例子:

import flet as ft

def main(page: ft.Page):
    def find_option(option_name):
        for option in d.options:
            if option_name == option.key:
                return option
            return None

    def add_clicked(e):
        d.value = "test"
        page.update()
    
    def delete_clicked(e):
        option = find_option(d.value)
        if option != None:
            d.options.remove(option)
            # d.value = None
            page.update()

    d = ft.Dropdown(options=[ft.dropdown.Option("test")]) # simple change
    option_textbox = ft.TextField(hint_text="Enter item name")
    add = ft.ElevatedButton("Add", on_click=add_clicked)
    delete = ft.OutlinedButton("Delete selected", on_click=delete_clicked)
    page.padding = 50
    page.add(d, ft.Row(controls=[option_textbox, add, delete]))

ft.app(target=main)

撰写回答