Выбор режима внутри Tkinter mainl oop () - PullRequest
0 голосов
/ 18 апреля 2020

У меня возникла следующая проблема: я хочу иметь возможность выбрать режим, когда выполняется один из трех операторов if, а когда он заканчивается, то go соответствует выбранному. Например, если «режим» работает, и я выбираю «p» после «s», если заканчивается «p», если начинается. Я также хочу, чтобы эти процессы работали без перебоев. Спасибо: D

import tkinter as tk
from tkinter import *

answer = ''

root = Tk()
root.geometry('250x150')
root.title('Mode Selection')

v = tk.IntVar()
v.set(0)  # initializing the choice, i.e. Python
b1 = Button()

modes = [
    ('s', 'to start"'),
    ('p', 'to pause'),
    ('a', 'to abort'),
]

tk.Label(root,
         text="""Choose a mode:""",
         justify=tk.CENTER,
         padx=20).pack()

for val, language in enumerate(modes):
    tk.Radiobutton(root,
                   text=language,
                   padx=20,
                   variable=v,
                   value=val,
                   justify=tk.CENTER).pack()

answer = modes[v.get()][0]

if answer == 's':
    print('s')
    # do something...
elif answer == 'p':
    print('p')
    # do something...
elif answer == 'a':
    print('a')
    # do something...

root.mainloop()

1 Ответ

0 голосов
/ 18 апреля 2020

Здесь, используя command, мы можем связать событие или функцию, вызванную выбором переключателя

modes = [
    ('s', 'to start"'),
    ('p', 'to pause'),
    ('a', 'to abort'),
]


def show_mode(z):
    # Do something...
    print(z)


tk.Radiobutton(root,
               text=modes[0],
               padx=20,
               variable=v,
               value=0,
               justify=tk.CENTER,
               command = lambda : show_mode('s')).pack()

tk.Radiobutton(root,
               text=modes[1],
               padx=20,
               variable=v,
               value=1,
               justify=tk.CENTER,
               command = lambda : show_mode('p')).pack()

tk.Radiobutton(root,
               text=modes[2],
               padx=20,
               variable=v,
               value=2,
               justify=tk.CENTER,
               command = lambda : show_mode('a')).pack()

Надеюсь, это поможет:)

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