Как я могу создать случайное число между двумя номерами полей ввода в python tkinter?

#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:

  1. e2.get это метод, при котором вы не получите содержимое записи.Как указал jasonharper в комментарии, это должно быть e2.get() .
  2. Кроме того, entry.get() вернет строку вместо числа. чтобы сгенерировать случайное число с помощью random.randint , вам нужно преобразовать его в число.
  3. entry.insert() нужен аргумент index, вы его не передали, поэтому функцию следует изменить на:
 def button_generate():
    e1.delete(0, END)
    e1.insert(END, randint(int(e2.get()), int(e3.get())))