Радиокнопка не обновляет значения при нажатии в python с помощью tkinter - PullRequest
0 голосов
/ 01 февраля 2020

Это моя первая попытка GUI. Сейчас я просто хочу щелкнуть радиокнопку и заставить ее напечатать значение, которое я присвоил кнопке. Однако var.get() ничего мне не дает. Я попробовал это с IntVar (и мои значения были 1 и 2 вместо «протон» и «электрон»), а var.get() просто дал бы мне 0. С StringVar это ничего не дает (ничего не печатается, когда choosecharge вызывается радиокнопкой). Я попытался прочитать материал о радиокнопках, и я написал свой код на основе того, как я это сделал, и он успешно создает радиокнопки, но суть в том, чтобы иметь возможность использовать их значения при нажатии.

import tkinter as tk
def choosecharge():
  print(var.get())

root = tk.Tk()
var = tk.StringVar()
proton = tk.Radiobutton(root, text = "proton", variable = var, value = "proton", command = choosecharge)
proton.pack( )

electron = tk.Radiobutton(root, text="electron", variable = var, value= "electron", command = choosecharge)
electron.pack( )


root.mainloop()

1 Ответ

0 голосов
/ 01 февраля 2020

Я принял несколько иной подход к выполнению sh этой задачи.

  • Я создал словарь целочисленных значений радиокнопок в качестве ключа и строку, которую вы будете sh печатать как значение.
  • Использовал виджет метки для печати строки в GUI
import tkinter as tk

root = tk.Tk()

# define an IntVar
var = tk.IntVar()

# create a dictionary of key:value pair as radiobutton_value: str_name_to_print
values = {1: "proton", 2: "electron"}

# instantiate a label widget
lbl = tk.Label(root)

def choosecharge():
    # update the label widgets using the dictionary
    lbl.config(text=values[var.get()])

proton = tk.Radiobutton(root, text="proton", variable=var, value=1, command=choosecharge)
proton.pack(anchor=tk.W)

electron = tk.Radiobutton(root, text="electron", variable=var, value=2, command=choosecharge)
electron.pack(anchor=tk.W)

# pack the label widget below the two radiobuttons
lbl.pack()

root.mainloop()

Снимок экрана

Я прокомментировал строки в коде для лучшего понимания. Я надеюсь, что это решение поможет вам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...