Σκέφτηκα τότε ότι θα ήταν ωραίο να έχουμε ένα εφαρμογάκι που μας βρίσκει άμεσα ένα αποτέλεσμα που θα του ζητήσουμε.
Και ιδού
- Κώδικας: Επιλογή όλων
#!/usr/bin/env python3
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QLineEdit, QPushButton, QRadioButton, QMessageBox, QSlider
from PyQt5.QtCore import Qt
class ConverterApp(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.setWindowTitle('Μετατροπή Δυαδικών και Δεκαδικών Αριθμών')
self.setGeometry(900, 700, 400, 200)
self.setWindowFlag(Qt.FramelessWindowHint)
self.setStyleSheet("background-color: turquoise;")
layout = QVBoxLayout()
self.number_input = QLineEdit(self)
layout.addWidget(self.number_input)
self.number_input.setStyleSheet("background-color: white")
self.number_input.setFocus()
self.decimal_radio = QRadioButton('Δεκαδικό σε Δυαδικό', self)
self.decimal_radio.toggled.connect(self.number_input.setFocus)
self.binary_radio = QRadioButton('Δυαδικό σε Δεκαδικό', self)
self.binary_radio.toggled.connect(self.number_input.setFocus)
self.convert_button = QPushButton('Μετατροπή', self)
self.convert_button.clicked.connect(self.convert)
self.convert_button.setStyleSheet("background-color: lime")
self.close_button = QPushButton('Κλείσιμο', self)
self.close_button.clicked.connect(self.close)
self.close_button.setStyleSheet("background-color: lime")
layout.addWidget(self.decimal_radio)
layout.addWidget(self.binary_radio)
layout.addWidget(self.convert_button)
layout.addWidget(self.close_button)
self.setLayout(layout)
self.red_slider = QSlider(Qt.Horizontal)
self.red_slider.setMinimum(0)
self.red_slider.setMaximum(255)
self.red_slider.valueChanged.connect(self.changeColor)
layout.addWidget(self.red_slider)
self.red_slider.sliderMoved.connect(self.number_input.setFocus)
self.green_slider = QSlider(Qt.Horizontal)
self.green_slider.setMinimum(0)
self.green_slider.setMaximum(255)
self.green_slider.valueChanged.connect(self.changeColor)
layout.addWidget(self.green_slider)
self.green_slider.sliderMoved.connect(self.number_input.setFocus)
self.blue_slider = QSlider(Qt.Horizontal)
self.blue_slider.setMinimum(0)
self.blue_slider.setMaximum(255)
self.blue_slider.valueChanged.connect(self.changeColor)
layout.addWidget(self.blue_slider)
self.blue_slider.sliderMoved.connect(self.number_input.setFocus)
def changeColor(self):
red = self.red_slider.value()
green = self.green_slider.value()
blue = self.blue_slider.value()
self.setStyleSheet(f"background-color: rgb({red}, {green}, {blue});")
def convert(self):
number = self.number_input.text()
msg = QMessageBox()
msg.setIcon(QMessageBox.Information)
msg.setStyleSheet("background-color: black; color: white;")
if self.decimal_radio.isChecked():
try:
decimal_number = int(number)
binary_number = bin(decimal_number)[2:]
msg.setWindowTitle('Αποτέλεσμα')
msg.setText(f'Ο δεκαδικός αριθμός <font size="25"><b>{number}</b></font> αντιστοιχεί στον δυαδικό αριθμό <font size="25"><b>{binary_number}</b></font>.')
except ValueError:
msg.setWindowTitle('Σφάλμα')
msg.setText('Μη έγκυρος δεκαδικός αριθμός.')
elif self.binary_radio.isChecked():
if all(char in '01' for char in number):
decimal_number = int(number, 2)
binary_number = number
msg.setWindowTitle('Αποτέλεσμα')
msg.setText(f'Ο δυαδικός αριθμός <font size="25"><b>{binary_number}</b></font> αντιστοιχεί στον δεκαδικό αριθμό <font size="25"><b>{decimal_number}</b></font>.')
else:
msg.setWindowTitle('Σφάλμα')
msg.setText('Μη έγκυρος δυαδικός αριθμός.')
msg.exec()
self.number_input.setFocus()
self.number_input.clear()
def main():
app = QApplication(sys.argv)
window = ConverterApp()
window.show()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
Από τη γραμμή 44 μέχρι και την 67 μπορεί να αγνοηθεί όλο αυτό το κομμάτι. Είναι εντολές που κάνουν το παράθυρο μπιχλιμπιδάτο (γιατί είμαι η θεια η Σουλτάνα με τα τα λούσα της. Μου αρέσει να παίζω με εφετζίδικα πράγματα). Απλά αλλάζει χρώμα στο παράθυρο σε όλο το εύρος της RGB και το κάνει με διακόπτες sliders.
Τον κώδικα τον αντιγράφεις σε ένα απλό αρχείο κειμένου και το σώζεις με όποιο όνομα θέλεις. Κάνεις δεξί κλικ πάνω του, πας στις ιδιότητες και στην καρτέλα "Άδειες" ή "Δικαιώματα" το κάνεις εκτελέσιμο.
Πατάς κλικ και τρέχει. Μπορεί κάποια στιγμή να είναι και χρήσιμο