首页 > 解决方案 > 如何从条目中获取值并注入 init 函数参数?

问题描述

这是代码:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
import time
import sys


class TwitterBot:
    def __init__(self, username, password):
        self.username = username
        self.password = password


entry_user = tk.Entry(lower_frame, bg="white", fg='black', bd=0)
#entry_user.insert(0, "Username")
#entry_user.bind("<Button-1>", del_value_user)
entry_user.pack(expand = "yes")

entry_pass = tk.Entry(lower_frame, bg="white", fg='black', bd=0)
#entry_pass.insert(0, "Password")
#entry_pass.bind("<Button-1>", del_value_pass)
entry_pass.pack(expand = "yes")

sasha = TwitterBot(entry_user.get(), entry_pass.get())

该条目从不发送我输入的值sasha = TwitterBot(entry, entry2)

这意味着我想要在 tkinter 界面中输入两个条目,它们应该是用户名和密码,当我执行函数时,这些值会被注入。我认为问题在于self.usernameandself.password是在内部定义的__init__,所以如果这些条目在启动时保持为空,那么我无法让它们注入。因为我可以打印我的entry.get()价值观。我只是不能让它们替换我__init__函数的前两个参数。有人知道如何提供帮助吗?

标签: pythontkinter

解决方案


尝试这个:

import tkinter as tk


class TwitterBot:
    def __init__(self, username, password):
        print("Username =", username, "   Password =", password)
        self.username = username
        self.password = password

def create_bot(event=None):
    sasha = TwitterBot(entry_user.get(), entry_pass.get())
    print("started bot")

root = tk.Tk()

entry_user = tk.Entry(root, bg="white", fg='black', bd=0)
#entry_user.insert(0, "Username")
#entry_user.bind("<Button-1>", del_value_user)
entry_user.pack(expand=True)
# Log in if the user presses the Enter key:
entry_user.bind("<Return>", create_bot)

entry_pass = tk.Entry(root, bg="white", fg='black', bd=0)
#entry_pass.insert(0, "Password")
#entry_pass.bind("<Button-1>", del_value_pass)
entry_pass.pack(expand=True)
# Log in if the user presses the Enter key:
entry_pass.bind("<Return>", create_bot)

button = tk.Button(root, text="Log in", command=create_bot)
button.pack()

root.mainloop()

您的代码不起作用,因为一旦您的代码创建了条目,它就会尝试从中获取数据(这显然是一个空字符串)并创建了TwitterBot对象。为了使其工作,您必须给用户时间在条目中输入他们的详细信息,方法是向按下Enter键的用户添加按钮/绑定。

我创建了一个按钮并将其放在窗口的底部。当您单击它调用的按钮时,create_bot它会创建TwitterBot对象。


推荐阅读