Grafik Arayüzlü Otomatik Bilgisayar Kapatıcı

Not : sudo apt install python3-pyqt5 -y paketini yüklemeniz gerekebilir . Bu paket eksik olduğunda . Uygulamayı tıklarsın hiç tepki vermez . Çalışmaz . Öyle olursa bu paketi kurun .




1 : Belgeler içerisine Yeni Metin Belgesi açın . İsimi TurnOff.py olsun

İçine Aşağıdaki kodları yapıştırın .

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QPushButton, QLineEdit, QVBoxLayout, QMessageBox
from PyQt5.QtCore import QTimer, Qt
from PyQt5.QtGui import QFont, QIntValidator
import os

class TurnOffApp(QWidget):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("TurnOff")
        self.setGeometry(500, 200, 420, 350)
        self.setStyleSheet("background-color: #2c3e50;")  # Koyu arka plan

        self.remaining_seconds = 0

        layout = QVBoxLayout()

        # Saat/Dakika girişleri
        tk_label_hours = QLabel("Saat:")
        tk_label_hours.setFont(QFont("Arial", 12, QFont.Bold))
        tk_label_hours.setStyleSheet("color: #ecf0f1;")
        layout.addWidget(tk_label_hours, alignment=Qt.AlignCenter)

        self.entry_hours = QLineEdit()
        self.entry_hours.setValidator(QIntValidator(0,24))
        self.entry_hours.setPlaceholderText("Saat")
        self.entry_hours.setFixedWidth(80)
        self.entry_hours.setStyleSheet("background-color: white; color: black; font-size: 12pt;")
        layout.addWidget(self.entry_hours, alignment=Qt.AlignCenter)

        tk_label_minutes = QLabel("Dakika:")
        tk_label_minutes.setFont(QFont("Arial", 12, QFont.Bold))
        tk_label_minutes.setStyleSheet("color: #ecf0f1;")
        layout.addWidget(tk_label_minutes, alignment=Qt.AlignCenter)

        self.entry_minutes = QLineEdit()
        self.entry_minutes.setValidator(QIntValidator(0,59))
        self.entry_minutes.setPlaceholderText("Dakika")
        self.entry_minutes.setFixedWidth(80)
        self.entry_minutes.setStyleSheet("background-color: white; color: black; font-size: 12pt;")
        layout.addWidget(self.entry_minutes, alignment=Qt.AlignCenter)

        # Başlat butonu
        self.start_button = QPushButton("Başlat")
        self.start_button.setStyleSheet(
            "background-color: #27ae60; color: white; font-weight: bold; font-size: 14pt; padding: 12px; border-radius: 6px;")
        self.start_button.setFixedWidth(150)
        self.start_button.clicked.connect(self.start_timer)
        layout.addWidget(self.start_button, alignment=Qt.AlignCenter)

        # İptal Et butonu
        self.cancel_button = QPushButton("İptal Et")
        self.cancel_button.setStyleSheet(
            "background-color: #ff0000; color: white; font-weight: bold; font-size: 14pt; padding: 12px; border-radius: 6px;")
        self.cancel_button.setFixedWidth(150)
        self.cancel_button.clicked.connect(self.cancel_timer)
        layout.addWidget(self.cancel_button, alignment=Qt.AlignCenter)

        # Durum etiketi
        self.label_status = QLabel("Durum: Beklemede")
        self.label_status.setStyleSheet("color: #ecf0f1; font-size: 12pt;")
        self.label_status.setAlignment(Qt.AlignCenter)
        layout.addWidget(self.label_status)

        # Geri sayım etiketi
        self.label_time = QLabel("00:00:00")
        self.label_time.setFont(QFont("Arial", 36, QFont.Bold))
        self.label_time.setStyleSheet("color: #ff0000;")
        self.label_time.setAlignment(Qt.AlignCenter)
        layout.addWidget(self.label_time)

        self.setLayout(layout)

        # Timer
        self.timer = QTimer()
        self.timer.timeout.connect(self.update_timer)

    def start_timer(self):
        try:
            hours = int(self.entry_hours.text() or 0)
            minutes = int(self.entry_minutes.text() or 0)
        except ValueError:
            QMessageBox.warning(self, "Hata", "Saat ve dakika sayıları geçerli olmalıdır!")
            return

        self.remaining_seconds = hours*3600 + minutes*60
        if self.remaining_seconds <= 0:
            QMessageBox.warning(self, "Hata", "Süre 0 olamaz!")
            return
        if self.remaining_seconds > 24*3600:
            QMessageBox.warning(self, "Hata", "Maksimum süre 24 saat!")
            return

        self.label_status.setText(f"Zamanlayıcı başladı: {hours} saat {minutes} dakika")
        self.timer.start(1000)

    def update_timer(self):
        if self.remaining_seconds <= 0:
            self.timer.stop()
            self.label_status.setText("Bilgisayar kapanıyor...")
            os.system("systemctl poweroff")
            return
        hours = self.remaining_seconds // 3600
        mins = (self.remaining_seconds % 3600) // 60
        secs = self.remaining_seconds % 60
        self.label_time.setText(f"{hours:02d}:{mins:02d}:{secs:02d}")
        self.remaining_seconds -= 1

    def cancel_timer(self):
        self.timer.stop()
        self.remaining_seconds = 0
        self.label_time.setText("00:00:00")
        self.label_status.setText("Kapanma iptal edildi")
        self.entry_hours.clear()
        self.entry_minutes.clear()


if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = TurnOffApp()
    window.show()
    sys.exit(app.exec_())

2 : Masaüstüne Yeni Metin Belgesi açıp isimi TurnOff.Desktop olsun .

İçine Aşağıdaki Kodlar yazalım . Kullanıcı Adı Yazan Kısıma Kendi Kullanıcı adınızı Yazın

[Desktop Entry]
Name=Otmatik Kapatma Zamanlayıcı
Comment=Bilgisayarı zamanlayıcı ile kapat
Exec=python3 /home/KENDİ_KULLANICI_ADINIZ/Belgeler/TurnOff.py
Icon=system-shutdown
Terminal=false
Type=Application
Categories=Utility;

ve oluşan dosyanın üzerine sağ tıklayıp Başlamasına izin ver işaretleyin .
Başlamasına izin ver seçeneği çıkmazsa masaüstündeki dosyayı komple silip tekrar 2. Aşamadan başlayın .

3 Beğeni

Hata Düzeltmesi . Düzeltilmiş kodlar konuya eklendi .

Belgeler içindeki TurnOff.py dosyayı metin belgesi ile açıp içindekileri silip

yeni kodları yazınız ve kayıt edip çıkınız .

Geri Sayım Satırı 00:00 yerine 00:00:00 olarak güncellendi .

Hata ve Düzeltme Resim Görüntüsü .


Bu konu son yanıttan 30 gün sonra otomatik olarak kapatıldı. Yeni yanıtlara artık izin verilmiyor.