陳彥勳_Python/Tkinter/Entry建構輸入工具/Pop移除串列元素

整合開發環境IDE

程式碼

    

!pip install gradio

import gradio as gr

class BankManager:
    def __init__(self):
        self.initial_banks = [
            '臺灣土地銀行', '合作金庫商業銀行', '第一商業銀行', '華南商業銀行', '彰化商業銀行',
            '台北富邦商業銀行', '國泰世華商業銀行', '兆豐國際商業銀行', '花旗(台灣)商業銀行',
            '王道商銀', '臺灣中小企業銀行', '渣打國際商業銀行', '滙豐(台灣)商業銀行', '臺灣新光商業銀行',
            '聯邦商業銀行', '遠東商業銀行', '元大商業銀行', '永豐商業銀行', '玉山商業銀行', '凱基商業銀行',
            '星展(臺灣)商業銀行', '台新國際商業銀行', '中國信託商業銀行', '將來商業銀行', '連線商業銀行',
            '樂天國際商業銀行'
        ]
        self.banks = self.initial_banks.copy()

    def format_banks(self):
        formatted_list = []
        for i in range(0, len(self.banks), 3):
            line = self.banks[i:i+3]
            while len(line) < 3:
                line.append('')  # 填充空白
            formatted_list.append('{:<20} {:<20} {:<20}'.format(*line))
        return '\n'.join(formatted_list)

    def show_banks(self):
        return self.format_banks()

    def add_bank(self):
        try:
            self.banks.append('臺灣銀行')
            return self.format_banks()
        except Exception as e:
            return f"Error: {str(e)}"

    def reset_banks(self):
        try:
            self.banks = self.initial_banks.copy()
            return self.format_banks()
        except Exception as e:
            return f"Error: {str(e)}"

    def delete_label(self):
        return ''

    def ABC(self):
        print("ABC function called")

    def kill(self):
        try:
            if self.banks:
                self.banks.pop()  # pop() 移除 banks 列表的最後一個元素
                self.ABC()  # 调用 ABC 函数
            return self.format_banks()
        except Exception as e:
            return f"Error: {str(e)}"

    def add_custom_bank(self, bank_name):
        try:
            if bank_name:  # 確保輸入不為空
                self.banks.append(bank_name)
            return self.format_banks()
        except Exception as e:
            return f"Error: {str(e)}"

    def search_bank(self, search_term):
        try:
            search_results = [bank for bank in self.banks if search_term in bank]
            return self.format_banks(search_results) if search_results else "找不到符合的銀行"
        except Exception as e:
            return f"Error: {str(e)}"

    def sort_banks(self):
        try:
            self.banks = sorted(self.banks)
            return self.format_banks()
        except Exception as e:
            return f"Error: {str(e)}"

    def delete_specific_bank(self, bank_name):
        try:
            if bank_name in self.banks:
                self.banks.remove(bank_name)
            return self.format_banks()
        except Exception as e:
            return f"Error: {str(e)}"

bank_manager = BankManager()

with gr.Blocks(css="""
    .textbox {background-color: lightgray;}
    .btn-gray {background-color: lightgray;}
""") as demo:
    gr.Markdown("# 陳彥勳python建立Gradio視窗使用者介面")

    output = gr.Textbox(label="銀行列表", value="", placeholder="按下顯示銀行以查看列表", elem_classes="textbox")
    input_bank = gr.Textbox(label="新增銀行名稱", placeholder="輸入銀行名稱", elem_classes="textbox")
    search_term = gr.Textbox(label="搜尋銀行", placeholder="輸入銀行名稱以搜尋", elem_classes="textbox")
    delete_bank = gr.Textbox(label="刪除銀行名稱", placeholder="輸入要刪除的銀行名稱", elem_classes="textbox")

    with gr.Row():
        btn_show = gr.Button("顯示銀行", elem_classes="btn-gray")
        btn_add = gr.Button("增加", elem_classes="btn-gray")
        btn_reset = gr.Button("還原", elem_classes="btn-gray")

    with gr.Row():
        btn_delete = gr.Button("刪除", elem_classes="btn-gray")
        btn_kill = gr.Button("移除最後一個", elem_classes="btn-gray")
        btn_add_custom = gr.Button("新增自訂銀行", elem_classes="btn-gray")

    with gr.Row():
        btn_search = gr.Button("搜尋", elem_classes="btn-gray")
        btn_sort = gr.Button("排序", elem_classes="btn-gray")
        btn_delete_specific = gr.Button("刪除特定銀行", elem_classes="btn-gray")

    btn_show.click(bank_manager.show_banks, outputs=output)
    btn_add.click(bank_manager.add_bank, outputs=output)
    btn_reset.click(bank_manager.reset_banks, outputs=output)
    btn_delete.click(bank_manager.delete_label, outputs=output)
    btn_kill.click(bank_manager.kill, outputs=output)
    btn_add_custom.click(bank_manager.add_custom_bank, inputs=input_bank, outputs=output)
    btn_search.click(bank_manager.search_bank, inputs=search_term, outputs=output)
    btn_sort.click(bank_manager.sort_banks, outputs=output)
    btn_delete_specific.click(bank_manager.delete_specific_bank, inputs=delete_bank, outputs=output)

demo.launch()

留言

  1. https://chenyenhsun.blogspot.com/2025/03/idecolabpython.html
    https://chenyenhsun.blogspot.com/2025/04/javascriptpython.html
    https://chenyenhsun.blogspot.com/2025/03/pythontkinterentrypop.html

    回覆刪除

張貼留言

這個網誌中的熱門文章

下午_陳彥勳_金融常識Onchange改變取代原來Onclick按鈕事件

陳彥勳_js產生html編碼建立超連結hyperlink