import sys from PyQt5.QtWidgets import QApplication, QLabel, QVBoxLayout, QWidget, QHBoxLayout, QPushButton, QFrame from PyQt5.QtGui import QPixmap, QPalette, QBrush from PyQt5.QtCore import Qt, QTimer, QDateTime class KartOkumaSistemi(QWidget): def __init__(self): super().__init__() self.setWindowTitle("Menemen Belediyesi Kart Okutma Sistemi") self.setWindowFlags(Qt.FramelessWindowHint) # Çerçevesiz pencere self.showFullScreen() # Tam ekran moduna geçiş # Arka plan fotoğrafını ayarla self.set_background("background.jpeg") # Üst kısım: Logo ve saat #self.logo_label = QLabel(self) #self.logo_label.setPixmap(QPixmap("logo.png").scaled(200, 200, Qt.KeepAspectRatio)) #self.logo_label.setAlignment(Qt.AlignLeft) self.time_label = QLabel("", self) self.time_label.setAlignment(Qt.AlignRight) self.time_label.setStyleSheet("font-size: 24px; color: white; padding: 10px;") # Saat yazısı büyütüldü header_layout = QHBoxLayout() #header_layout.addWidget(self.logo_label) header_layout.addWidget(self.time_label) # Ana etiketler self.kart_bilgi_label = QLabel("Lütfen kartınızı okutunuz...", self) self.kart_bilgi_label.setAlignment(Qt.AlignCenter) self.kart_bilgi_label.setStyleSheet("font-size: 20px; color: white;") # Kart bilgileri ve fotoğrafın yer aldığı çerçeve self.card_frame = QFrame(self) self.card_frame.setStyleSheet("border: 3px solid white; border-radius: 10px; padding: 10px; background-color: rgba(0, 0, 0, 0.5);") self.card_frame.setFixedSize(500, 250) # Kimlik kartı ebatları (yatay görünüm) # Fotoğraf alanı çerçeve içinde vesikalık boyutlarda self.foto_frame = QFrame(self.card_frame) self.foto_frame.setStyleSheet("border: 2px solid white; border-radius: 5px; padding: 5px; background-color: white;") self.foto_frame.setFixedSize(150, 200) self.foto_label = QLabel(self.foto_frame) self.foto_label.setPixmap(QPixmap("placeholder.png").scaled(140, 190, Qt.KeepAspectRatio)) self.foto_label.setAlignment(Qt.AlignCenter) # Kart bilgisi alanları self.isim_label = QLabel("İsim: Ali", self.card_frame) self.soyisim_label = QLabel("Soyisim: Yılmaz", self.card_frame) self.kart_id_label = QLabel("Kart ID: 123456", self.card_frame) self.giris_saati_label = QLabel("Giriş Saati: -", self.card_frame) self.cikis_saati_label = QLabel("Çıkış Saati: -", self.card_frame) # Label stilleri labels = [self.isim_label, self.soyisim_label, self.kart_id_label, self.giris_saati_label, self.cikis_saati_label] for label in labels: label.setStyleSheet("font-size: 20px; color: white; margin: 5px; border: none; padding: 0px;") # Çerçeve kaldırıldı # Çıkış butonu self.exit_button = QPushButton("Çıkış", self) self.exit_button.setStyleSheet(""" background-color: red; color: white; font-size: 18px; padding: 10px 40px; border: none; border-radius: 10px; """) # Çıkış butonuna tasarım self.exit_button.clicked.connect(self.close) # Çıkış butonuna basıldığında program kapanır # Çerçeve içindeki yerleşimler card_layout = QHBoxLayout(self.card_frame) # Yatay düzen card_layout.setAlignment(Qt.AlignCenter) card_layout.addWidget(self.foto_frame) # Fotoğraf sol tarafa info_layout = QVBoxLayout() # Bilgiler için dikey düzen info_layout.addWidget(self.isim_label, alignment=Qt.AlignLeft) info_layout.addWidget(self.soyisim_label, alignment=Qt.AlignLeft) info_layout.addWidget(self.kart_id_label, alignment=Qt.AlignLeft) info_layout.addWidget(self.giris_saati_label, alignment=Qt.AlignLeft) info_layout.addWidget(self.cikis_saati_label, alignment=Qt.AlignLeft) card_layout.addLayout(info_layout) # Bilgiler sağ tarafa # Ana yerleşim düzeni main_layout = QVBoxLayout() main_layout.addLayout(header_layout) main_layout.addWidget(self.kart_bilgi_label) main_layout.addWidget(self.card_frame, alignment=Qt.AlignCenter) # Çerçeve ekranın ortasında main_layout.addWidget(self.exit_button, alignment=Qt.AlignCenter) # Çıkış butonu alt kısımda ortalanır self.setLayout(main_layout) # Saat güncelleyici zamanlayıcı self.clock_timer = QTimer() self.clock_timer.timeout.connect(self.update_time) self.clock_timer.start(1000) # Her saniye saat güncellenir self.giris_saati = None # İlk giriş saati için değişken def set_background(self, image_path): """Arka planı ayarla""" palette = QPalette() pixmap = QPixmap(image_path).scaled(800, 480, Qt.KeepAspectRatioByExpanding) # 7 inç ekran çözünürlüğü palette.setBrush(QPalette.Background, QBrush(pixmap)) self.setPalette(palette) def update_time(self): # Anlık saati güncelle current_time = QDateTime.currentDateTime().toString("hh:mm:ss") self.time_label.setText(current_time) def kart_okundu(self): current_time = QDateTime.currentDateTime().toString("hh:mm:ss") self.kart_bilgi_label.setText("Kart Okundu! Kart ID: 123456") # Giriş ve çıkış saati if self.giris_saati is None: self.giris_saati = current_time self.giris_saati_label.setText(f"Giriş Saati: {self.giris_saati}") self.cikis_saati_label.setText(f"Çıkış Saati: {current_time}") def keyPressEvent(self, event): # ESC tuşuna basıldığında programı kapat if event.key() == Qt.Key_Escape: self.close() if __name__ == "__main__": app = QApplication(sys.argv) sistem = KartOkumaSistemi() sistem.show() # Kart okutma işlemini simüle etmek için bir zamanlayıcı ekleyin sim_timer = QTimer() sim_timer.timeout.connect(sistem.kart_okundu) # Kart okutma simülasyonu sim_timer.start(5000) # Her 5 saniyede bir simüle et sys.exit(app.exec_())