Como pegar o valor digitado no input e usar ele em outra parte do codigo

1. Como pegar o valor digitado no input e usar ele em outra parte do codigo

gabriel de freitas
gabrielfreitas

(usa Debian)

Enviado em 15/01/2022 - 13:10h

olá, estou com um problema no meu codigo, quando executo e digito o valor no input ele imprimi somente uma letra, e nao a frase toda,
a variavel sel.comentario, está com o valor digitado no input, só que quando o codigo vai pegar os valores so me retorna valores aleatorios e so retorna uma letra
a linha que esta com problema é a seguinte:
random.choice(self.comentario), comment_input_box)
onde self.comentario é o valor digitado no input, quem puder me ajudar eu agradeço:

from re import I
from tkinter import *
import tkinter.messagebox
from threading import stack_size
from typing import Sized
from selenium import webdriver
from PySimpleGUI import PySimpleGUI as sg
import mysql.connector
from selenium.webdriver.common.keys import Keys
import time
import random
import datetime

#connecting to the database
connectiondb = mysql.connector.connect(host="robocomentario.mysql.dbaas.com.br",user="robocomentario",passwd="Gunbound@01",database="robocomentario")
cursordb = connectiondb.cursor()






def login():
global root2
root2 = Toplevel(root)
root2.title("Sistema de login Robo de comentarios Marvin")
root2.iconbitmap('robot.ico')
root2.geometry("450x300")
root2.config(bg="white")

global username_verification
global password_verification
Label(root2, text='Preencha suas credencias de login', bd=1,font=('arial', 12, 'bold'), relief="groove", fg="white",
bg="#9300ae",width=300).pack()
username_verification = StringVar()
password_verification = StringVar()
Label(root2, text="").pack()
Label(root2, text="Usuario :", font=('arial', 15, 'bold')).pack()
Entry(root2, textvariable=username_verification).pack()
Label(root2, text="").pack()
Label(root2, text="Senha :", fg="black", font=('arial', 15, 'bold')).pack()
Entry(root2, textvariable=password_verification, show="*").pack()
Label(root2, text="").pack()
Button(root2, text="Logar", bg="#9300ae", fg='white', relief="groove", font=('arial', 15, 'bold'),command=login_verification).pack()
Label(root2, text="")

def logged_destroy():
logged_message.destroy()
root2.destroy()

def failed_destroy():
failed_message.destroy()

def logged():

sg.theme('Reddit')
layout = [
[sg.Text('Bem vindo ao Robô Marvin automatico de comentários em sorteios do instagram ,por favor informe os dados abaixo para o programa iniciar os comentarios', size=(50,3))],
[sg.Text('Usuario:'),sg.Input(key='username', size=(40, 4))],
[sg.Text('Senha:'),sg.Input(key='password',password_char='*', size=(40,4))],
[sg.Text('Código do sorteio'),sg.Input(key='hashtag', size=(40,4))],
[sg.Text('Comentario'),sg.Input(key='comentario', size=(40,4))],
[sg.Button('Entrar', size=(50,3)),

]
]

#Janela


janela = sg.Window('Robô Marvin de Comentarios v0.13', layout, icon='robot.ico')

#ler os eventos
while True:
eventos, valores = janela.read()
if eventos == sg.WINDOW_CLOSED:
break

if eventos == 'Entrar':
if valores['username'] == '' or valores['password'] == '' or valores['hashtag'] == '' or valores['comentario'] == '' :
sg.Popup('Há campos vazios a serem preenchidos no formulário, tente novamente ', title='Atenção preencha todos os campos')
else:
jhonatanBot = InstagramBot(valores['username'], valores['password'], valores['hashtag'], valores['comentario'])
jhonatanBot.login()
def login_verification():
user_verification = username_verification.get()
pass_verification = password_verification.get()
sql = "select * from users where username = %s and email = %s"
cursordb.execute(sql,[(user_verification),(pass_verification)])
results = cursordb.fetchall()
if results:
for i in results:
logged()
return i

else:
failed()


class InstagramBot:
def __init__(self, username, password, hashtag_procurar, comentario):
self.username = username
self.password = password
self.hashtag_procurar = hashtag_procurar
self.comentario = comentario
firefoxProfile = webdriver.FirefoxProfile()
firefoxProfile.set_preference("intl.accept_languages", "pt,pt-BR")
firefoxProfile.set_preference("dom.webnotifications.enabled", False)
self.driver = webdriver.Firefox(
firefox_profile=firefoxProfile, executable_path=r"./geckodriver"
)
""" # Coloque o caminho para o seu geckodriver aqui, lembrando que você precisa instalar o firefox e geckodriver na versão mais atual """
# Link download do geckodriver: https://github.com/mozilla/geckodriver/releases
# Link download Firefox https://www.mozilla.org/pt-BR/firefox/new/

def login(self):
driver = self.driver
driver.get("https://www.instagram.com")

time.sleep(3)
user_element = driver.find_element_by_xpath(
"//input[@name='username']")
user_element.clear()
user_element.send_keys(self.username)
time.sleep(3)
password_element = driver.find_element_by_xpath(
"//input[@name='password']")
password_element.clear()
password_element.send_keys(self.password)
time.sleep(3)
password_element.send_keys(Keys.RETURN)
time.sleep(5)
self.comente_nas_fotos_com_a_hashtag(self.hashtag_procurar
) # Altere aqui para a hashtag que você deseja usar.

@staticmethod
def type_like_a_person(sentence, single_input_field):
""" Este código irá basicamente permitir que você simule a digitação como uma pessoa """
print("going to start typing message into message share text area")
for letter in sentence:
single_input_field.send_keys(letter)
time.sleep(random.randint(1, 5) / 30)

def comente_nas_fotos_com_a_hashtag(self, hashtag):
links_de_posts = []
driver = self.driver
driver.get("https://www.instagram.com/p/" + hashtag + "/")
time.sleep(5)
for i in range(
1, 3
): # Altere o segundo valor aqui para que ele desça a quantidade de páginas que você quiser: quer que ele desça 5 páginas então você deve alterar de range(1,3) para range(1,5)
driver.execute_script(
"window.scrollTo(0, document.body.scrollHeight);")
time.sleep(3)
hrefs = driver.find_elements_by_tag_name("a")
pic_hrefs = [elem.get_attribute("href") for elem in hrefs]
print(hashtag + " fotos: " + str(len(pic_hrefs)))
for link in pic_hrefs:
try:
if link.index("/p/") != -1:
links_de_posts.append(link)
except:
pass

for pic_href in links_de_posts:
driver.get(pic_href)
driver.execute_script(
"window.scrollTo(0, document.body.scrollHeight);")
try:

comentarios = ["Caramba! Tá top!🤖","Essa foto ficou demais viu!🤖", "Só fooootão🤖","Curti muito essa foto!🤖","Que fotão!!!!🤖","Tooooop!!!🤖","Eitaaaaaa que foto =D🤖"]


# Remova esses comentários e insira os seus comentários aqui
driver.find_element_by_class_name("Ypffh").click()
comment_input_box = driver.find_element_by_class_name("Ypffh")
time.sleep(random.randint(2, 5))
self.type_like_a_person(
random.choice(self.comentario), comment_input_box)
time.sleep(random.randint(2, 5))
driver.find_element_by_xpath(
"//button[contains(text(), 'Publicar')]"
).click()
time.sleep(random.randint(2, 5))
except Exception as e:
print(e)
time.sleep(5)
def failed():
global failed_message
failed_message = Toplevel(root2)
failed_message.title("Mensagem do sistema")
failed_message.geometry("500x100")
Label(failed_message, text="Usuario ou senha informada não conferem, tente novamente", fg="red", font="bold").pack()
Label(failed_message, text="").pack()
Button(failed_message,text="Ok", bg="blue", fg='white', relief="groove", font=('arial', 12, 'bold'), command=failed_destroy).pack()



#login pega dados do usuario







def Exit():
wayOut = tkinter.messagebox.askyesno("Sistema de Login Robo de comentarios Marvin", "Tem certeza que deseja sair ?")
if wayOut > 0:
root.destroy()
return

def main_display():
global root
root = Tk()
root.config(bg="white")
root.iconbitmap('robot.ico')
root.title("Sistema de Login Robo Marvin de comentarios 1.0")
root.geometry("500x500")
Label(root,text='Bem vindo ao robo de comentario Marvin', bd=10, font=('arial', 10, 'bold'), relief="groove", fg="white",
bg="#9300ae",width=300).pack()
Label(root,text="").pack()
Button(root,text='Entrar', height="1",width="20", bd=8, font=('arial', 12, 'bold'), relief="groove", fg="white",
bg="#9300ae",command=login).pack()
Label(root,text="").pack()
Button(root,text='Sair', height="1",width="20", bd=8, font=('arial', 12, 'bold'), relief="groove", fg="white",
bg="#9300ae",command=Exit).pack()
Label(root,text="").pack()

main_display()
mainloop()



  


2. Re: Como pegar o valor digitado no input e usar ele em outra parte do codigo

Jhevi
Jhevison

(usa Arch Linux)

Enviado em 31/01/2022 - 03:15h


Bom, respondendo ao título. Você poderia criar uma variável global, assim outras funções (ou outras partes do código), teriam acesso ao valor da variável global.