вернуть данные из функции, вызываемой кнопкой tkinter - PullRequest
0 голосов
/ 16 декабря 2018

Мне нужно вернуть данные из функции, которая вызывается с помощью кнопки tkinter.

root= Tk()
def random():
    num_1= random.randint(0,12)
    num_2= random.randint(0,3)
    return num_1,num_2

num_1= None
num_2= None
Play=ttk.Button(text="Play",command=random)
Play.grid(row=3,column=0)

root.mainloop()

Я не уверен, где в действительности возвращаются сохраненные переменные, потому что когда я печатаю num_1 и num_2, оба печатают None вместоожидаемые случайные числа.Любой вклад будет оценен.

(также у меня есть основной цикл и т. Д.)

Ответы [ 4 ]

0 голосов
/ 16 декабря 2018

Возможно, вы ошиблись, так как кажется, что вы импортируете random module и также вызываете свою функцию обратного вызова random.

Другая причина проблемы заключается в том, что вы воздействуете на локальные переменные, а не на глобальные.

0 голосов
/ 16 декабря 2018

делает то, что вы хотите, чтобы функция выполнялась внутри функции в этом сценарии.

from tkinter import  *

import random

root= Tk()
def random_():
    num_1= random.randint(0,12)
    num_2= random.randint(0,3)
    # return num_1,num_2
    print(num_1,num_2)

num_1= None
num_2= None
Play= Button(text="Play",command=random_)
Play.grid(row=3,column=0)

root.mainloop()

return

будет работать, если вы выполните

print(random_)
0 голосов
/ 16 декабря 2018

Предпочитаю не использовать глобальные переменные

from tkinter import *
import random


def random_(tmp_list):
    tmp_list[0] = random.randint(0, 12)
    tmp_list[1] = random.randint(0, 3)


root = Tk()
tmp_list = [None, None]
Play=Button(text='Play', command=lambda: random_(tmp_list))
Play.grid(row=3, column=0)
root.mainloop()

print(tmp_list[0], tmp_list[1])
0 голосов
/ 16 декабря 2018

если вы намеревались объявить num_1 и num_2 как глобальную переменную, то вы должны объявить ее в случайной функции.

root= Tk()
def random():
    global num_1, num_2
    num_1= random.randint(0,12)
    num_2= random.randint(0,3)
    return num_1,num_2

num_1= None
num_2= None
Play=ttk.Button(text="Play",command=random)
Play.grid(row=3,column=0)

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