Tkinter ekran açık mı?

sadece bunun fonksiyonu bana lazım çünkü threading kullandım ve ekran kapansa bile işlem devam ediyor.

şair burda ne demek istemiş?

1 Beğeni

Thread’i oluştururken main processi kontrol etmesi için daemon argümanı gönderebilirsiniz:

thread = threading.Thread(target=func, daemon=True)
thread.start()
Tkinter ekran açık mı?

Ekrandan kastınız nedir? Monitörün güç yönetiminden kapalı olması durumu mu?

Monitörün gücünün tamamen kapatılması mı?

Yoksa bir cep telefonu yada tablet cihaz gibi bütünleşik bir cihazın ekranının devre dışı olması durumu mu?

Çünkü bunlardan biriyse her biri için ayrı ayrı alt sorunlar ve bazılarının çözümü var bazılarının çözümü yok. (imkansız diye bir şey yoktur dolaylı yoldan etrafından geçilebilir ama genel geçer çözümü yok.)

İkinci aşamada ekran kapansa bile işlem devam ediyor derken, işlem ekran kapandığında devam mı etsin devam etmesin tam olarak hangisi sizin işinize yarar?

Şu an sayısız ihtimal aklıma geliyor sorularınızı biraz belirginleştirirseniz iyi olur.

Mesela alternatif bir çözüm belirli bir koşulda bir thread’in önceliğini artırabilir yada azaltabilirisiniz.

Hatta isterseniz belirli bir süre çalıştırıp, zamanlamış görev haline getirip belirli periyotlar sonunda tamamen kapatıp tekrar başlatabilirsiniz.

Ama şu anki verdiğiniz bilgilerle tek bir fonksiyon verip çözmek mümkün görünmüyor.

Aslında düşümdüğüm şey ise soru çok güzel ve üzerinde çalışmaya değer. Ama bu aşamada ne istediğinizi tam anlayamazsak enerjiyi yanlış yere harcamız olabiliriz.

Biraz soru ve sorununuzu detaylıca anlatırsanız belki net bir çözüm önerebilirim.

Bir kaç aklıma gelen fikir;

Python 3: Detect monitor power state in Windows - Stack Overflow

Monitörün güç durumunu almak.

Thread’in monitörün durumunu öğrenebildiğinizi varsayarak, yavaşlatmak yada hızlandırmak

rfk/threading2: like the standard threading module, but awesomer (github.com)

Bu arada göz ucuyla baktım thread priolity ayarlamakla ilgili python a özgü tereddütler de var bazı makalelerde.

Sonuçta, ne kadar geniş soru o kadar net ve kapsamlı cevap, şimdilik bu kadar görebiliyorum.

Ama doğru anladıysam sizin de yolunuz Win32Api ile kesişecek. Tabi hedef cihazınızın windows olduğunu varsaydık. Android ve Linux türevleriyse önerilerin yönü bambaşka tarafa gidecek.

Çok detaylı… Ehem ben tkinter penceresinden bahsediyorum.

Şimdi ekranı oluştururken bunu mu yapacağım

Şöyle sorabilseniz daha kolay olurdu. Tkinter da geliştirdiğim uygulamada, uygulama penceresini kapattığım halde thread devam ediyor. Uygulama penceresini kapattığımda thread’in de kapanmasını istiyorum, bunu nasıl yapabilirim?

Cevap:

multithreading - python Tkinter- Close thread on window close(x) - Stack Overflow

Tkinter uygulamanızın pencersinin olaylarını takip ettiğiniz kısımda onClose olayında, açık olan thread i kapatacak bir kod eklerseniz pencere kapatılırken thread 'e de kapanması için mesaj gidecektir.

    def on_closing(self):
        if messagebox.askokcancel("myapp", "Do you want to quit?"):
            if self.thread.is_alive():
                self.thread.stop()
            self.master.destroy()

Ama

Tkinter ekran açık mı?

Yazınca hiç bir şey anlaşılmıyor: Ekran? Açık mı? Kod lazım? Ekran kapansa bile işlem devam ediyor?

Etsin mi etmesin mi?

Duygularınızı içinizde yaşamayın, kelimelere dökün ki biz de anlayabilelim.

Hatta bir kod örneği koysaydınız üzerinde oynar düzeltirdik.

1 Beğeni

Şimdi thread bir butonda başlıyor sonra ise ekranı kaparıyorum işlem devam ediyor.
Kodu paylaşamıyorum. :d

Şimdi bu def sadece kapanışta mı çalışıyor?