Как я могу связать свою кнопку запуска, чтобы обработать все функции моего бота? - PullRequest
0 голосов
/ 15 января 2020

Прошу прощения, если я не проясню с ясностью, я все еще новичок в этом .. работаю над проектом универа и цель приложения GUI состоит в том, чтобы автоматизировать вход в несколько учетных записей ..

Когда нажата кнопка запуска, я хочу, чтобы он взял имя файла, запустил его через стартер и начал входить в систему. однако, когда я попробовал, он дал мне эту ошибку.

" Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Python\lib\tkinter\__init__.py", line 1883, in __call__
return self.func(*args)
TypeError: Loginsam() missing 2 required positional arguments: 'usr' and 'pas'"

#step1. Load filename from samfiles.

def open():
    global filename
    root.filename = filedialog.askopenfilename(initialdir="/user/local/desktop", title="Select A File", filetypes=(("Txt","*.txt"),("allfiles", "*.*")))
    filename= root.filename

    my_label = Label(root, text=root.filename)
    my_label.grid(row=1, column=1, columnspan=3)
    #my_image = ImageTk.PhotoImage(Image.open(root.filename))
    #my_image_label = Label(image=my_image).pack()
 #       configfile.Insert(INSERT, f.read())



Load_File = Button(root, text="open File", command=open)
Load_File.grid(row=1, column=0)

#

#Process the file in step one in here


def Starter():
    while True:
        for i, line in enumerate(f):
            line = line.strip()
            print('line{:3d}: {}'.format(i, line))

            if len(line) > 0:

                data, _= line.split('#')
                usr, pas = data.split(':')
                usr = usr.strip()
                pas = pas.strip()

                print('line {:3d} usr: {}'.format(i,usr))
                print('line {:3d} pas: {}'.format(i, pas))

                #Loginsam(usr, pas)


#step4. Link to all the previous functions


Start= Button(root, text="Start", command= Loginsam)
Start.grid(padx=5, pady=5)

#End result login in successfully

def Loginsam(usr, pas):

    chromedriver_path = r"C:/"
    chrome_options = webdriver.ChromeOptions()
    prefs = {"profile.managed_default_content_settings.images": 2}
    chrome_options.add_experimental_option("prefs", prefs)
    sam = webdriver.Chrome(chromedriver_path, options=chrome_options)
    sam.maximize_window()
    sleep(2)
    sam.get('url')
    sleep(3)

    user = sam.find_element_by_name("username")
    user.clear()
    user.send_keys(usr)
    sleep(3)

    password = sam.find_element_by_name('password')
    password.send_keys(pas)
    sleep(6)


root.mainloop()

Я был бы признателен, если бы кто-то мог дать мне решение этой проблемы ..

1 Ответ

0 голосов
/ 17 января 2020

Проблема в том, что в вашем коде для функции Loginsam требуются два параметра: usr и pas. Когда вы вызываете функцию из команды в кнопке Start, она вызывается без параметров

Start= Button(root, text="Start", command= Loginsam)
Start.grid(padx=5, pady=5)

Для ее решения необходимо выполнить команду, используя lambda

username = 'MY USERNAME'
password = 'MY PASSWORD'
Start= Button(root, text="Start", command= lambda usr=username, pas=password: Loginsam(usr, pas))
Start.grid(padx=5, pady=5)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...