#python #tkinter
#python #tkinter
Вопрос:
Хорошо, вот еще один идиотский вопрос: у меня есть два поля ввода, и идея состоит в том, чтобы вставить случайное число в третье поле ввода. Я хочу, чтобы случайное число находилось между значениями двух полей ввода. Например: я ввожу число 1 в первое поле ввода и число 10 во второе. Когда я нажимаю кнопку, я хочу, чтобы она создавала случайное число между этими 1 и 10 и вставляла его в третье поле. (Извините, если это сбивает с толку, я изо всех сил старался объяснить) Вот некоторый код:
import tkinter
from tkinter import Entry, END, E, W
from random import randint, randrange
root = tkinter.Tk()
root.title('Number Generator')
e1 = Entry(root, font=("LEMON MILK Bold", 24), width=10, borderwidth=10)
e1.grid(row=0, column=0, columnspan=3)
e2 = Entry(root, font=("LEMON MILK Bold", 24), width=5, borderwidth=10)
e2.grid(row=1, column=0, columnspan=2, sticky=W)
e3 = Entry(root, font=("LEMON MILK Bold", 24), width=5, borderwidth=10)
e3.grid(row=1, column=1, columnspan=2, sticky=E)
#Definitions
def button_generate():
e1.delete(0, END)
e1.insert(randint(e2.get, e3.get))
def button_clear():
e1.delete(0, END)
#Buttons
button_generate = tkinter.Button(root, text="Random number", font=("LEMON MILK Bold", 28), padx=20,
pady=10, command=button_generate)
button_clear = tkinter.Button(root, text="Erase", font=("LEMON MILK Bold", 14), padx=22, pady=5,
command=button_clear)
button_exit = tkinter.Button(root, text="Exit", font=("LEMON MILK Bold", 14), padx=15, pady=5,
command=root.quit)
#Grid
button_generate.grid(row=2, column=0, columnspan=3)
button_clear.grid(row=3, column=1)
button_exit.grid(row=3, column=2, sticky=E)
root.mainloop()
Комментарии:
1.
e2.get()
например, нетe2.get
.2. С какой частью у вас возникли проблемы? — Создание случайного числа? Реагирование на нажатие кнопки? Вставка случайного числа?
3. @wwiii У меня возникли проблемы с той частью, где я вставляю 1 и 10 в поля ввода, и я нажимаю кнопку, но это выдает ошибку, и она не вставляет случайное число от 1 до 10 в третье поле ввода.
4.
gives me an error
— При публикации вопроса о коде, который создает исключение, всегда включайте полную обратную трассировку — скопируйте и вставьте его, затем отформатируйте как код (выберите его и введитеctrl-k
) .5. Всегда показывать ошибку. О, и это:
r2.get
это метод get. Вы хотите вызвать этот метод, а не использовать сам метод в качестве параметра.
Ответ №1:
Ваши проблемы связаны с insert
методом. Первым аргументом метода является index
, вы должны предоставить его. Второй аргумент — это строка, которую вы хотите ввести. Эта строка генерируется randint
методом. Этот метод запрашивает два целых числа. Вы должны получить значения из e2
и e3
и преобразовать их в целые числа.
button_generate
Функция должна быть :
def button_generate():
e1.delete(0, END)
e1.insert(0,randint(int(e2.get()), int(e3.get())))
Ответ №2:
e2.get
это метод, при котором вы не получите содержимое записи.Как указал jasonharper в комментарии, это должно бытьe2.get()
.- Кроме того,
entry.get()
вернет строку вместо числа. чтобы сгенерировать случайное число с помощьюrandom.randint
, вам нужно преобразовать его в число. entry.insert()
нужен аргумент index, вы его не передали, поэтому функцию следует изменить на:
def button_generate():
e1.delete(0, END)
e1.insert(END, randint(int(e2.get()), int(e3.get())))