簡體   English   中英

無法在 Python/Tkinter 中獲取單選按鈕的值

[英]Can't get the value of a radio-button in Python/Tkinter

我正在編寫一個簡單的單位轉換器,用戶可以在其中從兩個選項中選擇他們想要轉換的單位。 我正在使用單選按鈕進行選擇,但似乎無法讓所選按鈕的值在程序底部的條件下工作。

我嘗試了這里關於堆棧溢出的幾種解決方案,但都沒有奏效。 有一次,我讓 selected() 打印按鈕的值,但在這種情況下它仍然不起作用。 我在這里遺漏了一些明顯的東西嗎? 請注意,轉換器尚未完成,在解決此問題后,還有更多工作要做。

from tkinter import *

window = Tk()
window.title("Unit converter")
window.minsize(width=300, height=300)
window.config(padx=50, pady=50)


def lbs_kgs():
    user_input = float(unit_A1.get())
    result = round((user_input / 2.2046), 2)
    unit_B1.config(text= f"{result}")

def mil_km():
    user_input = float(unit_A1.get())
    result = round((user_input * 1.6), 2)
    unit_B1.config(text= result)

def selected():
    return radio_state.get()


intro_label = Label(text = "What units would you like to convert?")
intro_label.grid(column=0, row=0, columnspan=4, pady=10)

radio_state = StringVar()
radiobutton1 = Radiobutton(text="Pounds to kilograms", value="pk", variable=radio_state, command=selected)
radiobutton2 = Radiobutton(text="Miles to kilometers", value="mk", variable=radio_state, command=selected)
radiobutton1.grid(column=0, row=1, columnspan=4)
radiobutton2.grid(column=0, row=2, columnspan=4)

instructions_label = Label(text = "Enter the number:")
instructions_label.grid(column=0, row=3, columnspan=4, pady=10)

unit_A1 = Entry(width=5)
unit_A1.grid(column=1, row=4, sticky="e")

unit_A1_label = Label(text = "unit A1")
unit_A1_label.grid(column=2, row=4, sticky="w")

equal_label = Label(text = "is equal to")
equal_label.grid(column=1, row=5, sticky="e")

unit_B1 = Label(text = "0")
unit_B1.grid(column=2, row=5, sticky="w")

unit_B1_label = Label(text = "result unit")
unit_B1_label.grid(column=3, row=5, sticky="w")

button = Button(text="Calculate")
button.grid(column=0, row=6, columnspan=4, pady=10)

if selected() == "pk":
    button.config(command=lbs_kgs)

elif selected() == "mk":
    button.config(command=mil_km)



window.mainloop()

if/else檢查移動到selected的 function 中,以便每次選擇更改時都可以檢查條件

def selected():
    selection = radio_state.get()
    if selection == "pk":
        button.config(command=lbs_kgs)
    elif selection == "mk":
        button.config(command=mil_km)

第 29 行應該是radio_state = StringVar(window, '1') 如果沒有這個,當執行時兩個radiobutton都打開,但那是不對的。

def selected():
   if (selection := radio_state.get()) == "pk":
       button.config(command=lbs_kgs)
   elif selection == "mk":
        button.config(command=mil_km)

Output:

在此處輸入圖像描述

Output 磅 自 公斤:

在此處輸入圖像描述

Output 英里為公里:

在此處輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM