Не удается получить пользовательский ввод в tkinter - PullRequest
0 голосов
/ 29 апреля 2018

Я создаю графический интерфейс для загрузки файлов с веб-сайтов, используя tkinter. но я получаю неожиданную ошибку Код:

from tkinter import *
from tkinter import ttk
import urllib.request

root = Tk(className='VideoDownloader')
root.geometry("400x200")
root.resizable(width=False, height=False)

Lab = ttk.Label(root, text='Download a file from any site')
Lab.grid(row=0, column=0)


def down():
    u = url.get()
    n = name.get()
    urllib.request.urlretrieve(u, n)

Lab1 = ttk.Label(root, text='Enter file name :')
Lab1.grid(row=1, column=0)

name = ttk.Entry(root,)
name.grid(row=2, column=0)

Lab2 = ttk.Label(root, text='Enter video url :')
Lab2.grid(row=3, column=0)

url = Text(root,)
url.grid(row=4, column=0)

but = ttk.Button(root, text='Download', command=down())
but.grid(row=5, column=0)
root.mainloop()

Создает ошибку:

Traceback (most recent call last):
  File "C:/Users/User/Desktop/test.py", line 30, in <module>
    but = ttk.Button(root, text='Download', command=down())
  File "C:/Users/User/Desktop/test.py", line 14, in down
    u = url.get()
TypeError: get() takes at least 2 positional arguments (1 given)

В моем последнем проекте я создал графический интерфейс для сравнения чисел и get () не требует аргумента

1 Ответ

0 голосов
/ 29 апреля 2018

Url - это виджет Text, а не виджет Entry. Если вам нужна только одна строка, используйте виджет Entry, и метод get() будет работать нормально.


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

url.get("1.0",END)

«1.0» означает, что ввод должен читаться с первого символа первой строки. END - это константа tkinter, для которой задана строка «end», и она означает чтение до конца виджета. Фактически это добавит символ новой строки в конец ввода, поэтому вы должны использовать настраиваемую строку:

'end-1c'

означает один символ перед концом.

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