Biliyorum bu başlık çok yetersiz oldu.
Kodlar :
from PyQt5.QtWidgets import *
import sys
import math
from PyQt5.QtGui import *
from PyQt5.QtCore import *
import calc_ui
class Window(QMainWindow, calc_ui.Ui_MainWindow):
def __init__(self):
super().__init__()
self.setupUi(self)
self.menubar()
self.one_to_nine_table = [
[self.one,self.two,self.three], # row_one
[self.four,self.five,self.six], # row_two
[self.seven,self.eight,self.nine] # row_three
]
button_list = [
# numbers
self.one_to_nine_table[0][0], self.one_to_nine_table[0][1], self.one_to_nine_table[0][2],
self.one_to_nine_table[1][0], self.one_to_nine_table[1][1], self.one_to_nine_table[1][2],
self.one_to_nine_table[2][0], self.one_to_nine_table[2][1], self.one_to_nine_table[2][2],
self.zero,
#others
self.equals, self.comma, self.left_paranthesis, self.right_paranthesis,
self.addition, self.extraction_process, self.multiplication, self.division,
self.exp_num, self.delete_2, self.show_exp_num, self.sqrt
]
for i in button_list:
i.clicked.connect(
# funct
)
def menubar(self):
# Style (QMenu)
self.menuBar.setStyleSheet("QMenuBar {\n"
" background-color: #DCDCDC;\n"
" color: black;\n"
"}\n"
"\n"
"")
# triggers
# Styles
self.actionYellow.triggered.connect(self.yellow_font)
self.actionGreen.triggered.connect(self.green_font)
self.actionRed.triggered.connect(self.red_font)
self.actionWhite.triggered.connect(self.white_font)
# Mods
self.actionCalculator.triggered.connect(self.show_calculator)
self.actionOther.triggered.connect(self.show_other)
self.actionMiniWindow.triggered.connect(self.miniWindow)
def get_yellow_font(self,bool):
if bool == True:
return ("QPushButton {\n"
" background-color: #303030;\n"
" color: yellow;\n"
" font-size:50px;\n"
"}\n"
"\n"
"QPushButton:hover {\n"
" background-color: #4d4d4d;\n"
"}\n"
"\n"
"")
elif bool == False:
return ("QPushButton {\n"
" background-color: #303030;\n"
" color: yellow;\n"
" font-size:30px;\n"
"}\n"
"\n"
"QPushButton:hover {\n"
" background-color: #4d4d4d;\n"
"}\n"
"\n"
"")
def get_green_font(self,bool):
if bool == True:
return ("QPushButton {\n"
" background-color: #303030;\n"
" color: #00ff00;\n"
" font-size:50px;\n"
"}\n"
"\n"
"QPushButton:hover {\n"
" background-color: #4d4d4d;\n"
"}\n"
"\n"
"")
elif bool == False:
return ("QPushButton {\n"
" background-color: #303030;\n"
" color: #00ff00;\n"
" font-size:30px;\n"
"}\n"
"\n"
"QPushButton:hover {\n"
" background-color: #4d4d4d;\n"
"}\n"
"\n"
"")
def get_red_font(self,bool):
if bool == True:
return ("QPushButton {\n"
" background-color: #303030;\n"
" color: #ff0000;\n"
" font-size:50px;\n"
"}\n"
"\n"
"QPushButton:hover {\n"
" background-color: #4d4d4d;\n"
"}\n"
"\n"
"")
elif bool == False:
return ("QPushButton {\n"
" background-color: #303030;\n"
" color: #ff0000;\n"
" font-size:30px;\n"
"}\n"
"\n"
"QPushButton:hover {\n"
" background-color: #4d4d4d;\n"
"}\n"
"\n"
"")
def get_white_font(self,bool):
if bool == True:
return ("QPushButton {\n"
" background-color: #303030;\n"
" color: white;\n"
" font-size:50px;\n"
"}\n"
"\n"
"QPushButton:hover {\n"
" background-color: #4d4d4d;\n"
"}\n"
"\n"
"")
elif bool == False:
return ("QPushButton {\n"
" background-color: #303030;\n"
" color: white;\n"
" font-size:30px;\n"
"}\n"
"\n"
"QPushButton:hover {\n"
" background-color: #4d4d4d;\n"
"}\n"
"\n"
"")
def yellow_font(self):
self.one_to_nine_table[0][0].setStyleSheet(self.get_yellow_font(True))
self.one_to_nine_table[0][1].setStyleSheet(self.get_yellow_font(True))
self.one_to_nine_table[0][2].setStyleSheet(self.get_yellow_font(True))
self.one_to_nine_table[1][0].setStyleSheet(self.get_yellow_font(True))
self.one_to_nine_table[1][1].setStyleSheet(self.get_yellow_font(True))
self.one_to_nine_table[1][2].setStyleSheet(self.get_yellow_font(True))
self.one_to_nine_table[2][0].setStyleSheet(self.get_yellow_font(True))
self.one_to_nine_table[2][1].setStyleSheet(self.get_yellow_font(True))
self.one_to_nine_table[2][2].setStyleSheet(self.get_yellow_font(True))
self.zero.setStyleSheet(self.get_yellow_font(True))
self.equals.setStyleSheet(self.get_yellow_font(True))
self.delete_2.setStyleSheet(self.get_yellow_font(False))
self.show_exp_num.setStyleSheet(self.get_yellow_font(False))
self.sqrt.setStyleSheet(self.get_yellow_font(False))
self.clean.setStyleSheet(self.get_yellow_font(True))
self.addition.setStyleSheet(self.get_yellow_font(False))
self.extraction_process.setStyleSheet(self.get_yellow_font(False))
self.multiplication.setStyleSheet(self.get_yellow_font(False))
self.division.setStyleSheet(self.get_yellow_font(False))
self.exp_num.setStyleSheet(self.get_yellow_font(False))
self.left_paranthesis.setStyleSheet(self.get_yellow_font(True))
self.right_paranthesis.setStyleSheet(self.get_yellow_font(True))
self.comma.setStyleSheet(self.get_yellow_font(False))
self.clean.setStyleSheet(self.get_yellow_font(True))
def green_font(self):
self.one_to_nine_table[0][0].setStyleSheet(self.get_green_font(True))
self.one_to_nine_table[0][1].setStyleSheet(self.get_green_font(True))
self.one_to_nine_table[0][2].setStyleSheet(self.get_green_font(True))
self.one_to_nine_table[1][0].setStyleSheet(self.get_green_font(True))
self.one_to_nine_table[1][1].setStyleSheet(self.get_green_font(True))
self.one_to_nine_table[1][2].setStyleSheet(self.get_green_font(True))
self.one_to_nine_table[2][0].setStyleSheet(self.get_green_font(True))
self.one_to_nine_table[2][1].setStyleSheet(self.get_green_font(True))
self.one_to_nine_table[2][2].setStyleSheet(self.get_green_font(True))
self.zero.setStyleSheet(self.get_green_font(True))
self.equals.setStyleSheet(self.get_green_font(True))
self.delete_2.setStyleSheet(self.get_green_font(False))
self.show_exp_num.setStyleSheet(self.get_green_font(False))
self.sqrt.setStyleSheet(self.get_green_font(False))
self.clean.setStyleSheet(self.get_green_font(True))
self.addition.setStyleSheet(self.get_green_font(False))
self.extraction_process.setStyleSheet(self.get_green_font(False))
self.multiplication.setStyleSheet(self.get_green_font(False))
self.division.setStyleSheet(self.get_green_font(False))
self.exp_num.setStyleSheet(self.get_green_font(False))
self.left_paranthesis.setStyleSheet(self.get_green_font(True))
self.right_paranthesis.setStyleSheet(self.get_green_font(True))
self.comma.setStyleSheet(self.get_green_font(False))
self.clean.setStyleSheet(self.get_green_font(True))
def red_font(self):
self.one_to_nine_table[0][0].setStyleSheet(self.get_red_font(True))
self.one_to_nine_table[0][1].setStyleSheet(self.get_red_font(True))
self.one_to_nine_table[0][2].setStyleSheet(self.get_red_font(True))
self.one_to_nine_table[1][0].setStyleSheet(self.get_red_font(True))
self.one_to_nine_table[1][1].setStyleSheet(self.get_red_font(True))
self.one_to_nine_table[1][2].setStyleSheet(self.get_red_font(True))
self.one_to_nine_table[2][0].setStyleSheet(self.get_red_font(True))
self.one_to_nine_table[2][1].setStyleSheet(self.get_red_font(True))
self.one_to_nine_table[2][2].setStyleSheet(self.get_red_font(True))
self.zero.setStyleSheet(self.get_red_font(True))
self.equals.setStyleSheet(self.get_red_font(True))
self.delete_2.setStyleSheet(self.get_red_font(False))
self.show_exp_num.setStyleSheet(self.get_red_font(False))
self.sqrt.setStyleSheet(self.get_red_font(False))
self.clean.setStyleSheet(self.get_red_font(True))
self.addition.setStyleSheet(self.get_red_font(False))
self.extraction_process.setStyleSheet(self.get_red_font(False))
self.multiplication.setStyleSheet(self.get_red_font(False))
self.division.setStyleSheet(self.get_red_font(False))
self.exp_num.setStyleSheet(self.get_red_font(False))
self.left_paranthesis.setStyleSheet(self.get_red_font(True))
self.right_paranthesis.setStyleSheet(self.get_red_font(True))
self.comma.setStyleSheet(self.get_red_font(False))
self.clean.setStyleSheet(self.get_red_font(True))
def white_font(self):
self.one_to_nine_table[0][0].setStyleSheet(self.get_white_font(True))
self.one_to_nine_table[0][1].setStyleSheet(self.get_white_font(True))
self.one_to_nine_table[0][2].setStyleSheet(self.get_white_font(True))
self.one_to_nine_table[1][0].setStyleSheet(self.get_white_font(True))
self.one_to_nine_table[1][1].setStyleSheet(self.get_white_font(True))
self.one_to_nine_table[1][2].setStyleSheet(self.get_white_font(True))
self.one_to_nine_table[2][0].setStyleSheet(self.get_white_font(True))
self.one_to_nine_table[2][1].setStyleSheet(self.get_white_font(True))
self.one_to_nine_table[2][2].setStyleSheet(self.get_white_font(True))
self.zero.setStyleSheet(self.get_white_font(True))
self.equals.setStyleSheet(self.get_white_font(True))
self.delete_2.setStyleSheet(self.get_white_font(False))
self.show_exp_num.setStyleSheet(self.get_white_font(False))
self.sqrt.setStyleSheet(self.get_white_font(False))
self.clean.setStyleSheet(self.get_white_font(True))
self.addition.setStyleSheet(self.get_white_font(False))
self.extraction_process.setStyleSheet(self.get_white_font(False))
self.multiplication.setStyleSheet(self.get_white_font(False))
self.division.setStyleSheet(self.get_white_font(False))
self.exp_num.setStyleSheet(self.get_white_font(False))
self.left_paranthesis.setStyleSheet(self.get_white_font(True))
self.right_paranthesis.setStyleSheet(self.get_white_font(True))
self.comma.setStyleSheet(self.get_white_font(False))
self.clean.setStyleSheet(self.get_white_font(True))
def show_calculator(self):
pass
def show_other(self):
pass
def miniWindow(self):
pass
app = QApplication(sys.argv)
window = Window()
window.setWindowTitle("Calculator")
window.show()
sys.exit(app.exec_())
Kodların Şu satırlarında :
button_list = [
# numbers
self.one_to_nine_table[0][0], self.one_to_nine_table[0][1], self.one_to_nine_table[0][2],
self.one_to_nine_table[1][0], self.one_to_nine_table[1][1], self.one_to_nine_table[1][2],
self.one_to_nine_table[2][0], self.one_to_nine_table[2][1], self.one_to_nine_table[2][2],
self.zero,
#others
self.equals, self.comma, self.left_paranthesis, self.right_paranthesis,
self.addition, self.extraction_process, self.multiplication, self.division,
self.exp_num, self.delete_2, self.show_exp_num, self.sqrt
]
for i in button_list:
i.clicked.connect(
# funct
)
gördüğünüz gibi butonları tek bir fonksiyona bağlamaya çalışmışım. Ben bütün butonları tek bir fonksiyona bağlayacağım ancak hepsinin farklı bir işlevi olacak.
Yani hepsi “a” adında bir fonksiyonda toplanıyorsa, biri “b” biri “c” işlevini gerçekleştirecek.
Yanılmıyorsam iç içe fonksiyonlar yazmamız gerekecek ama nasıl bir şey yazmalıyım bir türlü bulamadım. Yardımcı olur musunuz ?
Aslında bütün butonları tek tek
self.btn.clicked.connect(funct_one)
self.btn.clicked.connect(funct_two)
.....
def func_one(self):
.....
def func_two(self):
.....
bu şekilde yazabilirdim ancak bu şekilde yazmak karmaşık olurdu ve okunaklığı azaltırdı bence.
Bu yüzden “Bütün Buton Objelerini Tek Bir Fonksiyon Altında Toplayıp O Fonksiyonun da Altında Ayrı Ayrı İşlevlendirmek” istedim. Bunu nasıl yapacağım konusuda sizden yardım istiyorum.
Eğer söylediğim yöntemden daha güzel bir fikriniz varsa belirtebilirsiniz.