Texbox içine yazdığımız saniye kadar bekleme

metin2 için bot kodladım fakat bir yerde takıldım. botun arayüzünde taşı kesme süresi textboxu var oraya kaç saniyede taşı kestiğimi yazıyorum o saniye boyunca hiçbir şey yapmıyo o saniye dolunca yeni taş aramaya başlıyor. fakat şimdi takıldığım bir şey yeni bir textbox açtım, bu textboxta otomatik skill bastırmak için kaç saniye gerektiği. mesela x skili 65 saniye sonra geliyo. 65 saniye sonra otomatik o tuşa bastırmak için ne yapabilirim (pydirectinput kullanacağım fakat sorduğum tam olarak bu değil) oraya yazdığımız süreye göre beklemesini nasıl sağlayabilirim. mesela 5yazdım 5 saniye bekledi. sonra başka zaman kullandım 20 yazdım 20 saniye beklicek falan. direkt arayüzden olmasını istediğim için soruyorum, yoksa kodlarsan sürekli sleep(x) değiştirirdim fakat arayüzünde bunu nasıl yapabilirim
botun arayüzünde yazdığım sayıya göre bunu algılıcak otomatik sleep atıcak lütfen yardımcı olur musunuz

Oraya yazılan saniyeyi integer olarak get fonksiyonu ile alabilirsiniz diye düşünüyorum. Bir entry componenti oluşturun. Ardından bunu arayüzde bir yere konumlandırın. İsterseniz baştan integer değer almasını sağlayabilirsiniz. eğer bunu yapmazsanızda sonrasında oraya yazılan değeri okumak için integere çevirirsiniz. Çevirdiğiniz sayı kadar tekrar eden bir for döngüsü oluşturursunuz her adımda bir saniye bekler (sleep fonksiyonuna argüman olarak 1 değerini atayın) böylece belirlenen sayı sizin bekleme süreniz olmuş olur.

tkinter kütüphanesinde Entry sınıfının kullanımı:

bu komutu istediğim gibi nasıl kullanıcağımı tam anlamadım

Şimdi bahsettiğiniz durum yalnızca beklemekle alakalı olduğundan girilen döngü içerisinde de bir işlem yapılmayacak. Belirlenen koşul boyunca döngü de kalacağından döngü den çıktıktan sonra belirlenen işlemler yapılacak.

Örnek veriyorum

for _ in range(entry.get()):
    sleep(1)
    print("Entry'e girilen değer kadar döngü tekrarı oluşturuldu")

diğer işlemler.
.
.
.

entry.get() integer olarak verdiğim bir örnek. Daha detaylı bakmak için verdiğim linklere gidin.
EDİT:
Üstteki cevabımda attığım linkteki şu kodu inceleyin

# Program to make a simple
# login screen


import tkinter as tk

root=tk.Tk()

# setting the windows size
root.geometry("600x400")

# declaring string variable
# for storing name and password
name_var=tk.StringVar() # Entry sınıfında textvariable parametresine verilecek değişken bu haliyle entry sınfından alınan her türlü girdi "string" bir girdi olacak. Bunu önlemek için IntVar() kullanılabilir bu şekilde de yalnızca sayı(tam sayı) kabul etmiş olacak.
passw_var=tk.StringVar()


# defining a function that will
# get the name and password and
# print them on the screen
def submit():

	name=name_var.get() # get fonksiyonunun kullanımı
	password=passw_var.get() # get fonksiyonunun kullanımı
	
	print("The name is : " + name)
	print("The password is : " + password)
	
	name_var.set("")
	passw_var.set("")
	
	
# creating a label for
# name using widget Label
name_label = tk.Label(root, text = 'Username', font=('calibre',10, 'bold'))

# creating a entry for input
# name using widget Entry
name_entry = tk.Entry(root,textvariable = name_var, font=('calibre',10,'normal'))

# creating a label for password
passw_label = tk.Label(root, text = 'Password', font = ('calibre',10,'bold'))

# creating a entry for password
passw_entry=tk.Entry(root, textvariable = passw_var, font = ('calibre',10,'normal'), show = '*')

# creating a button using the widget
# Button that will call the submit function
sub_btn=tk.Button(root,text = 'Submit', command = submit)

# placing the label and entry in
# the required position using grid
# method
name_label.grid(row=0,column=0)
name_entry.grid(row=0,column=1)
passw_label.grid(row=1,column=0)
passw_entry.grid(row=1,column=1)
sub_btn.grid(row=2,column=1)

# performing an infinite loop
# for the window to display
root.mainloop()

1 Beğeni

her şeyi denedim fakat yapamadım. yeni def açtım entryi tanımladım falan yine de çalışmıyor allah allah

   def havayak(havasuresi):

    for _ in range(havasuresi.get):

        pydirectinput.keyDown("ctrl")

        pydirectinput.keyDown("g")

        pydirectinput.keyUp("ctrl")

        pydirectinput.keyUp("g")

        pydirectinput.keyDown("3")

        pydirectinput.keyUp("3")

        pydirectinput.keyDown("ctrl")

        pydirectinput.keyDown("g")

        pydirectinput.keyUp("ctrl")

        pydirectinput.keyUp("g")

        sleep(1)

yapmak istediğim şey şöyle bir şey. arayüzde yazdığım süre geldiğinde bu kodları yapsın ama beceremedim

entry içine yazdığını get komutu ile bekle değişkenine atadım onu da sleep(bekle) komutu içine yazdım

import pydirectinput
import tkinter as tk
import threading
from time import sleep


root = tk.Tk()
root.geometry("300x200")


def havayak():
    bekle = int(ent1.get())
    for i in range(10):

        

        pydirectinput.keyDown("g")

        pydirectinput.keyUp("g")

        pydirectinput.keyDown("3")

        pydirectinput.keyUp("3")

        pydirectinput.keyDown("g")

        pydirectinput.keyUp("g")
        
        sleep(bekle)
    

def thehava():
    t2 = threading.Thread(target=havayak)
    t2.start()


ent1 = tk.Entry(width=5)
ent1.place(x=150, y=10)


btn1 = tk.Button(text='hava', width=8, height=1,
                 command=thehava)
btn1.place(x=5, y=5)

root.mainloop()

1 Beğeni

boş bir py üzerine yazdığımda çalıştırdım. fakat kendi hazırladığım arayüz üzerinde çalıştıramadım çalışmıyor. varmı bir bilginiz

pek anlamam ama yazdıklarını , hatayı vs görmem lazım

hata vermiyor. yeni bir proje oluşturup sizin attığınız kodu oraya yazınca benim program ve sizin attığınız program olarak 2 sekme geliyor, sizin sekmede çalışıyor. yeni proje açmak yerine kendi projem üstüne yazdığım zaman algılamıyor hata vermiyor ama çalışmıyor basmıyor tuşlara

yaptım hocam hallettim, ben threadı farklı şekilde tanımlamıştım oyüzden çalışmıyordu ama artık çalışıyor. elinize kolunuza sağlık çok teşekkür ederim