Merhaba arkadaşlar,
Benim Python ile geliştirdiğim bir PyQt5 uygulamam var ve ayarlar menüsünde bir dil ayarı eklemeye çalışıyorum. Ancak, dil seçimi yapıldığında ayarın uygulanmadığını fark ettim. Aşağıda yaşadığım problemi ve kodumun ilgili kısmını paylaşıyorum.Biraz acemiyim kodu hazırlayıp atarsanız çok minnetkar kalırım.
Problemin Tanımı: Ayarlar menüsünde bir dil seçeneği var. Kullanıcı bir dil seçtiğinde, uygulamanın dilinin değişmesini bekliyorum, ancak dil ayarı uygulanmıyor.
import sys
from PyQt5.QtWidgets import (
QApplication, QWidget, QVBoxLayout, QHBoxLayout,
QPushButton, QLabel, QStackedWidget, QListWidget, QComboBox
)
from PyQt5.QtCore import Qt, QTimer, QUrl
from PyQt5.QtGui import QFont, QColor
from PyQt5.Qt import QDesktopServices # Web sayfasını açmak için gerekli
class FPSBoosterApp(QWidget):
def init(self):
super().init()
self.setWindowTitle("Revorce Gaming")
self.setFixedSize(1000, 600)
self.setStyleSheet("background-color: #1F1F1F;")
main_layout = QHBoxLayout()
self.setLayout(main_layout)
self.menu = QListWidget()
self.menu.setFixedWidth(200)
self.menu.setStyleSheet("""
QListWidget {
background-color: #2A2A2A;
border: none;
color: #FFFFFF;
font-size: 16px;
}
QListWidget::item {
padding: 10px;
}
QListWidget::item:selected {
background-color: #00FF00;
outline: none;
}
QListWidget::item:hover {
background-color: #00CC00;
outline: none;
}
""")
self.translations = {
"Türkçe": {
"FPS Optimizer": "FPS Optimize Edici",
"Network Optimizer": "Ağ Optimize Edici",
"Reactivity Boost": "Tepki Süresi Arttırıcı",
"Cleanup Tool": "Temizleme Aracı",
"Ultra Performance": "Ultra Performans",
"Başlat": "Başlat",
"Ayarlar": "Ayarlar",
"Seçilen: ": "Seçilen: ",
"Dil Seçimi:": "Dil Seçimi:",
"Kaydet": "Kaydet",
"İşlem Tamamlandı!": "İşlem Tamamlandı!"
},
"İngilizce": {
"FPS Optimizer": "FPS Optimizer",
"Network Optimizer": "Network Optimizer",
"Reactivity Boost": "Reactivity Boost",
"Cleanup Tool": "Cleanup Tool",
"Ultra Performance": "Ultra Performance",
"Başlat": "Start",
"Ayarlar": "Settings",
"Seçilen: ": "Selected: ",
"Dil Seçimi:": "Language Selection:",
"Kaydet": "Save",
"İşlem Tamamlandı!": "Operation Completed!"
},
"Almanca": {
"FPS Optimizer": "FPS Optimierer",
"Network Optimizer": "Netzwerk Optimierer",
"Reactivity Boost": "Reaktionsfähigkeit verbessern",
"Cleanup Tool": "Bereinigungswerkzeug",
"Ultra Performance": "Ultra Leistung",
"Başlat": "Start",
"Ayarlar": "Einstellungen",
"Seçilen: ": "Ausgewählt: ",
"Dil Seçimi:": "Sprachauswahl:",
"Kaydet": "Speichern",
"İşlem Tamamlandı!": "Vorgang abgeschlossen!"
}
}
self.menu = QListWidget()
self.menu.setFixedWidth(200)
self.menu.setStyleSheet("""
QListWidget {
background-color: #2A2A2A;
border: none;
color: #FFFFFF;
font-size: 16px;
}
QListWidget::item {
padding: 10px;
}
QListWidget::item:selected {
background-color: #00FF00;
outline: none;
}
QListWidget::item:hover {
background-color: #00CC00;
outline: none;
}
""")
self.menu.addItems(["FPS Optimizer", "Network Optimizer", "Reactivity Boost", "Cleanup Tool", "Ultra Performance", "Ayarlar"])
self.menu.item(4).setForeground(QColor(255, 0, 0))
options_label = QLabel("Revorce Gaming")
options_label.setAlignment(Qt.AlignCenter)
options_label.setStyleSheet("color: #00FF00; font-size: 24px; margin: 10px;")
left_layout = QVBoxLayout()
left_layout.addWidget(options_label)
left_layout.addWidget(self.menu)
main_layout.addLayout(left_layout)
self.content_area = QStackedWidget()
main_layout.addWidget(self.content_area)
self.selected_menu_label = QLabel("Seçilen: FPS Optimizer")
self.selected_menu_label.setAlignment(Qt.AlignCenter)
self.selected_menu_label.setStyleSheet("color: #FFFFFF; font-size: 18px; margin: 5px;")
# Menüler için sayfaları oluşturma
self.create_page("FPS Optimizer", "Yüksek FPS ile rakiplerinizi geride bırakın!")
self.create_page("Network Optimizer", "İnternet Hızınızı zirveye taşıyın!")
self.create_page("Reactivity Boost", "Tepki sürenizi anında azaltın, oyun dünyasında hız kazanın!")
self.create_page("Cleanup Tool", "Sistem temizliğiyle performansınızı canlandırın ve hızı hissedin!")
self.create_page("Ultra Performance", "Ultra Performance Teknolojisi İle Bilgisayarınızı Zirveye Taşıyın!", is_last=True)
self.create_settings_page() # Ayarlar sayfasını oluştur
self.menu.currentItemChanged.connect(self.change_page)
def create_page(self, title, description, is_last=False):
page = QWidget()
layout = QVBoxLayout()
title_label = QLabel(title)
title_label.setAlignment(Qt.AlignCenter)
title_label.setStyleSheet("color: #FFFFFF; font-size: 30px; margin: 10px 0;")
title_label.setFont(QFont("Lexend", 24))
description_label = QLabel(description)
description_label.setAlignment(Qt.AlignCenter)
description_label.setStyleSheet("color: #FFFFFF; font-size: 22px; margin: 70px 0;")
fps_button = QPushButton("Başlat")
fps_button.setFixedSize(450, 60)
fps_button.setStyleSheet("""
QPushButton {
background-color: #00FF00;
color: #FFFFFF;
font-size: 22px;
border: none;
border-radius: 12px;
transition: background-color 0.3s, transform 0.2s, box-shadow 0.2s;
box-shadow: 0 4px 10px rgba(0, 255, 0, 0.4);
}
QPushButton:hover {
background-color: #66FF66;
transform: scale(1.05);
box-shadow: 0 8px 20px rgba(102, 255, 102, 0.9);
filter: brightness(1.1);
border: 2px solid #FFFFFF;
}
QPushButton:pressed {
background-color: #007700;
transform: scale(0.95);
box-shadow: 0 0 15px rgba(0, 255, 0, 0.8);
}
QPushButton:focus {
outline: none;
}
""")
layout.addWidget(title_label)
layout.addWidget(description_label, alignment=Qt.AlignCenter)
layout.addStretch()
layout.addWidget(fps_button, alignment=Qt.AlignCenter)
layout.addStretch()
selected_label = QLabel(f"Seçilen: {title}")
selected_label.setAlignment(Qt.AlignBottom | Qt.AlignCenter)
selected_label.setStyleSheet("color: #FFFFFF; font-size: 17px; margin: 5px;")
layout.addWidget(selected_label)
fps_button.clicked.connect(lambda: self.start_loading(title))
page.setLayout(layout)
self.content_area.addWidget(page)
if title == "Ultra Performance":
title_label.setStyleSheet("color: #FF0000; font-size: 30px; margin: 10px 0;")
description_label.setStyleSheet("color: #FF0000; font-size: 22px; margin: 70px 0;")
fps_button.setStyleSheet("""
QPushButton {
background-color: #FF0000;
color: #FFFFFF;
font-size: 22px;
border: none;
border-radius: 12px;
transition: background-color 0.3s, transform 0.2s, box-shadow 0.2s;
box-shadow: 0 4px 10px rgba(255, 0, 0, 0.4);
}
QPushButton:hover {
background-color: #FF6666;
transform: scale(1.05);
box-shadow: 0 8px 20px rgba(255, 102, 102, 0.9);
filter: brightness(1.1);
border: 2px solid #FFFFFF;
}
QPushButton:pressed {
background-color: #770000;
transform: scale(0.95);
box-shadow: 0 0 15px rgba(255, 0, 0, 0.8);
}
QPushButton:focus {
outline: none;
}
""")
def create_settings_page(self):
"""Ayarlar sayfasını oluşturur."""
settings_page = QWidget()
layout = QVBoxLayout()
title_label = QLabel("Ayarlar")
title_label.setAlignment(Qt.AlignCenter)
title_label.setStyleSheet("color: #FFFFFF; font-size: 30px; margin: 20px 0;")
layout.addWidget(title_label)
# Dil seçimi
language_layout = QHBoxLayout()
language_label = QLabel("Dil Seçimi:")
language_label.setStyleSheet("color: #FFFFFF; font-size: 20px;")
# Dil seçimi etiketinin genişliğini sınırlandırmadık, böylece genişleyebilir
# Aynı zamanda hizalamayı da düzenledik
self.language_combo = QComboBox() # Değişken olarak tanımlandı
self.language_combo.addItems(["Türkçe", "İngilizce", "Almanca", "Fransızca", "İspanyolca"])
self.language_combo.setFixedWidth(620)
self.language_combo.setStyleSheet("""
QComboBox {
background-color: #2A2A2A;
color: #ffffff;
padding: 10px;
border-radius: 7px;
font-size: 18px;
}
QComboBox::drop-down {
background-color: #2A2A2A;
border: none;
}
""")
# Dil seçimi etiketini ve combobox'u genişletmek için esneme ekliyoruz
language_layout.addStretch()
language_layout.addWidget(language_label)
language_layout.addWidget(self.language_combo)
language_layout.addStretch()
layout.addLayout(language_layout)
# Web Sitesi Butonu
website_button = QPushButton("Yardım/Bilgi/Destek")
website_button.setFixedSize(620, 40) # Butonun boyutunu uzattık
website_button.setStyleSheet("""
QPushButton {
background-color: transparent;
color: #FF0000;
font-size: 18px;
border: 2px solid #FF0000;
border-radius: 7px;
transition: background-color 0.3s, transform 0.2s, box-shadow 0.2s;
}
QPushButton:hover {
background-color: rgba(255, 0, 0, 0.1);
transform: scale(1.05);
box-shadow: 0 8px 20px rgba(255, 0, 0, 0.9);
border: 2px solid #FFFFFF;
}
QPushButton:pressed {
background-color: rgba(255, 0, 0, 0.2);
transform: scale(0.95);
box-shadow: 0 0 15px rgba(255, 0, 0, 0.8);
}
QPushButton:focus {
outline: none;
}
""")
website_button.clicked.connect(self.open_website) # Buton tıklandığında web sitesi açılır
layout.addWidget(website_button, alignment=Qt.AlignCenter)
# Kaydet butonu
save_button = QPushButton("Kaydet")
save_button.setFixedSize(500, 50)
save_button.setStyleSheet("""
QPushButton {
background-color: #00FF00;
color: #FFFFFF;
font-size: 18px;
border: none;
border-radius: 7px;
}
QPushButton:hover {
background-color: #66FF66;
}
QPushButton:pressed {
background-color: #007700;
}
""")
save_button.clicked.connect(self.save_settings) # Kaydet butonuna metodu bağlama
layout.addWidget(save_button, alignment=Qt.AlignCenter)
settings_page.setLayout(layout)
self.content_area.addWidget(settings_page)
def open_website(self):
"""Butona tıklandığında web sitesini açar."""
QDesktopServices.openUrl(QUrl("http://www.clasare.com.tr"))
def save_settings(self):
language = self.language_combo.currentText()
print(f"Ayarlar kaydedildi! Dil: {language}") # Ayarları terminalde loglama
def change_page(self):
current_item = self.menu.currentItem()
if current_item:
index = self.menu.row(current_item)
self.content_area.setCurrentIndex(index)
def start_loading(self, title):
loading_page = QWidget()
loading_layout = QVBoxLayout()
loading_label = QLabel("Lütfen Bekleyin...")
loading_label.setAlignment(Qt.AlignCenter)
loading_label.setStyleSheet("color: #FFFFFF; font-size: 30px; margin: 20px;")
loading_layout.addWidget(loading_label)
loading_page.setLayout(loading_layout)
self.content_area.addWidget(loading_page)
self.content_area.setCurrentWidget(loading_page)
# 11 saniye bekledikten sonra işlemi bitir
QTimer.singleShot(11000, lambda: self.finish_loading(title))
def finish_loading(self, title):
# Ultra Performance menüsü için özel mesaj
if title == "Ultra Performance":
ultra_page = QWidget()
ultra_layout = QVBoxLayout()
ultra_label = QLabel("U L T R A P E R F O R M A N C E O N")
ultra_label.setAlignment(Qt.AlignCenter)
ultra_label.setStyleSheet("color: #FF0000; font-size: 40px; margin: 20px;")
ultra_layout.addWidget(ultra_label)
ultra_page.setLayout(ultra_layout)
self.content_area.addWidget(ultra_page)
self.content_area.setCurrentWidget(ultra_page)
# 2 saniye sonra ana sayfaya geri dön
QTimer.singleShot(2000, lambda: self.content_area.setCurrentIndex(self.menu.currentRow()))
else:
# İşlem Tamamlandı mesajı gösterme
completed_page = QWidget()
completed_layout = QVBoxLayout()
completed_label = QLabel("İşlem Tamamlandı!")
completed_label.setAlignment(Qt.AlignCenter)
completed_label.setStyleSheet("color: #00FF00; font-size: 30px; margin: 20px;")
completed_layout.addWidget(completed_label)
completed_page.setLayout(completed_layout)
self.content_area.addWidget(completed_page)
self.content_area.setCurrentWidget(completed_page)
# 2 saniye sonra ana sayfaya geri dön
QTimer.singleShot(2000, lambda: self.content_area.setCurrentIndex(self.menu.currentRow()))
if name == "main":
app = QApplication(sys.argv)
main_window = FPSBoosterApp()
main_window.show()
sys.exit(app.exec_())