python - attributeerror 파이썬 str



AttributeError:입력 인스턴스에 '__len__'속성이 없습니다. (1)

문제는이 줄에 있습니다.

c.post('http://fruro.com/login.php', data=self.payload)

data 매개 변수로 전달하는 dict 에는 Entry 위젯에 대한 참조이며 해당 위젯의 내용이 아닌 값이 있으므로 상황이 발생합니다. 따라서 Requestslen 을 얻으려고하면 Entry__len__ 구현하지 않으므로 오류가 발생합니다 (어쨌든 원하는 것이 아닙니다). 그것을 고치려면 self.payload 를 다음과 같이 변경 self.payload .

self.payload = {
        'action': 'login',
        'email': self.email.get(),      # call get method to return
        'password': self.password.get() # the value in the Entry widgets
    }

https://src-bin.com

나는 파이썬에 대해 아주 새로운데, 나는 Tkinter를 가지고 놀고 있었고 나의 웹 어플리케이션에 로그인 할 수있는 간단한 프로그램을 만들려고 요청 했다. 다음과 같은 오류가 발생했습니다.

Exception in Tkinter callback
Traceback (most recent call last):
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk/Tkinter.py", line 1410, in __call__
    return self.func(*args)
  File "test.py", line 35, in login
    c.post('http://fruro.com/login.php', data=self.payload)
  File "/Users/Peter/Desktop/fruroPy/fruro/lib/python2.7/site-packages/requests/sessions.py", line 399, in post
    return self.request('POST', url, data=data, **kwargs)
  File "/Users/Peter/Desktop/fruroPy/fruro/lib/python2.7/site-packages/requests/sessions.py", line 343, in request
    prep = req.prepare()
  File "/Users/Peter/Desktop/fruroPy/fruro/lib/python2.7/site-packages/requests/models.py", line 222, in prepare
    p.prepare_body(self.data, self.files)
  File "/Users/Peter/Desktop/fruroPy/fruro/lib/python2.7/site-packages/requests/models.py", line 375, in prepare_body
    body = self._encode_params(data)
  File "/Users/Peter/Desktop/fruroPy/fruro/lib/python2.7/site-packages/requests/models.py", line 81, in _encode_params
    return urlencode(result, doseq=True)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib.py", line 1311, in urlencode
    len(v)
AttributeError: Entry instance has no attribute '__len__'

나는 몇 시간 동안 잘못 될 수있는 것이 무엇인지 알아 내려고 노력해 왔지만, 내가 뭘 잘못하고 있는지 모르겠습니다.

사용중인 코드는 다음과 같습니다.

from Tkinter import *
from requests import session

class Login:

    def __init__(self, master):

        frame = Frame(master)
        frame.pack()

        self.emLabel = Label(frame, text="Email:")
        self.emLabel.pack(side=LEFT)

        self.email = Entry(frame, width=15)
        self.email.pack(side=LEFT)

        self.pasLabel = Label(frame, text="Password:")
        self.pasLabel.pack(side=LEFT)

        self.password = Entry(frame, show="*", width=15)
        self.password.pack(side=LEFT)

        self.hi_there = Button(frame, text="Login", command=self.login)
        self.hi_there.pack()

    def login(self):

        self.payload = {
            'action': 'login',
            'email': self.email,
            'password': self.password 
        }

        with session() as c:
            c.post('http://fruro.com/login.php', data=self.payload)
            self.request = c.get('http://fruro.com')
            print self.request.headers
            print self.request.text


root = Tk()
login = Login(root)
root.title("Login to your account")
root.mainloop()

어떤 도움을 주시면 감사하겠습니다. 미리 감사드립니다.