lostyazilim

Form 5 saniye sonra donuyor ama işlem devam ediyor

3 Mesajlar 945 Okunma
lstbozum
wmaraci reklam

AlicanGun AlicanGun Çalış, Sabret, Kazan. Kullanıcı
  • Üyelik 01.07.2014
  • Yaş/Cinsiyet 28 / E
  • Meslek Fabrika İşçisi
  • Konum Gaziantep
  • Ad Soyad A** G**
  • Mesajlar 132
  • Beğeniler 11 / 28
  • Ticaret 2, (%50)
Merhabalar şöyle bir kod yazdım ama çalıştırınca form kitleniyor ama işlem devam ediyor. Sizce sorun nedir ?

import pyautogui
import tkinter
import tkinter.messagebox
from tkinter import Button,Label,messagebox

# karıştırma fonksiyonu
def mikser():

while True:
pyautogui.press("1",interval=3.75)
pyautogui.press("2",interval=0.50)


#durdurma fonksiyonu
def durdurma():
pencere.quit


pencere = tkinter.Tk()
pencere.title("DARKORBİT KARIŞTIRICI")
pencere.geometry("300x300")


yazan = Label(pencere,text=" AcG ")
yazan.grid(padx=110, pady=10)


basla= Button(pencere,text="Başla",width=5,height=2,command=mikser)
basla.grid(padx=2,pady=2)

durdur= Button(pencere,text="Durdur",width=5,height=2,command=durdurma,)
durdur.grid(padx=10,pady=10)

pencere.mainloop()



 

 

wmaraci
reklam

kodaylak kodaylak WM Aracı Kullanıcı
  • Üyelik 09.08.2018
  • Yaş/Cinsiyet 28 / E
  • Meslek Öğrenci
  • Konum Diğer
  • Ad Soyad G** U**
  • Mesajlar 93
  • Beğeniler 5 / 40
  • Ticaret 1, (%100)
Açıkçası pyautogui hakkında pek bir fikrim yok. Sınıf yapısına uyarladım programı. Program çalıştırılınca sonsuz döngüye giriyor. while döngüsü yerine tkinter'in after metodunu kullandım. Durdur fonksiyonu ise destroy metodunu kullanarak programdan çıkış sağlıyor. Siz direkt while yerine after metodu kullanırsanız sorun çözülür muhtemelen.


# karıştırma fonksiyonu
def mikser():
pyautogui.press("1",interval=3.75)
pyautogui.press("2",interval=0.50)
pencere.after(1000, mikser)


#durdurma fonksiyonu
def durdurma():
pencere.destroy()


Edit: OOP silindi.
 

 

YazilimMimari YazilimMimari Eski adi: Turgay Can Kullanıcı
  • Üyelik 25.06.2012
  • Yaş/Cinsiyet 38 / E
  • Meslek Engineering Director
  • Konum İstanbul Avrupa
  • Ad Soyad T** C**
  • Mesajlar 771
  • Beğeniler 2 / 260
  • Ticaret 0, (%0)
gui thread ile arka planda iş yapan thread birbirine sync olduklarından bir thread in işi bittiğinde diğerini bırakıyordur.

Eğer arka planda gui thread'inden bağımsız bir işlem parçası hep çalışsın istiyorsan, gui'den bağımsız async tetikleyeceğin bir thread init etmelisin.

İki thread arasındaki haberleşmeyide ortak bir queue üzerinden yapabilirsin.

Bu yazdığımın python karşılığı nedir bilmiyorum :)

SOF -> https://stackoverflow.com/questions/1198262/tkinter-locks-python-when-an-icon-is-loaded-and-tk-mainloop-is-in-a-thread

yazdığıma benzer bir şey.
 

 

https://www.linkedin.com/in/turgaycan/
Kaliteli kod yazılır.. (Günlük/Saatlik ücreti ile)
wmaraci
Konuyu toplam 1 kişi okuyor. (0 kullanıcı ve 1 misafir)
Site Ayarları
  • Tema Seçeneği
  • Site Sesleri
  • Bildirimler
  • Özel Mesaj Al