commit
ff5e2e1c97
@ -1,3 +0,0 @@
|
||||
/venv/
|
||||
/.idea/
|
||||
/build/
|
22
Calc3D.py
22
Calc3D.py
@ -6,21 +6,14 @@ import gettext
|
||||
import requests
|
||||
|
||||
from calculating import calculating, amortization, cost_prise
|
||||
from setts import window_setts
|
||||
from setts import window_setts, language, currency_setts
|
||||
from texts import calc, about, new_marge, ver, not_connect
|
||||
from update import upd_check
|
||||
from update import upd_check, upd_start
|
||||
|
||||
now = datetime.datetime.now()
|
||||
|
||||
|
||||
with open('setts.json') as file:
|
||||
old_data = json.load(file)
|
||||
if old_data['settings']["locale"] == 'English':
|
||||
locale = 'en_US'
|
||||
else:
|
||||
locale = 'ru_RU'
|
||||
|
||||
lang = gettext.translation('locale', localedir='locale', languages=[locale])
|
||||
lang = gettext.translation('locale', localedir='locale', languages=[language()])
|
||||
lang.install()
|
||||
_ = lang.gettext
|
||||
|
||||
@ -39,11 +32,11 @@ def create_window():
|
||||
[Sgi.Txt('_' * 46)],
|
||||
[Sgi.Text('0', size=(7, 1), font=('Consolas', 32),
|
||||
text_color='white', key='result', auto_size_text=True, justification='right', expand_x=True),
|
||||
Sgi.Text(_('руб.'), font=('Consolas', 32), text_color='white', key='result')],
|
||||
Sgi.Text(currency_setts(), font=('Consolas', 32), text_color='white', key='result')],
|
||||
[Sgi.Text(_('Себестоимость:'), font=12, text_color='white'),
|
||||
Sgi.Text('0', size=(7, 1), font=12, text_color='white', key='cost', auto_size_text=True,
|
||||
justification='right', expand_x=True),
|
||||
Sgi.Text(_('руб.'), font=('Consolas', 12), text_color='white', key='cost')],
|
||||
Sgi.Text(currency_setts(), font=('Consolas', 12), text_color='white', key='cost')],
|
||||
[Sgi.Txt('_' * 46, pad=(10, 5))],
|
||||
[Sgi.Text(_('Время печати')), Sgi.Push(), Sgi.InputText('0', size=(5, 20)), Sgi.Text(_('ч.')),
|
||||
Sgi.InputText('0', size=(5, 0)), Sgi.Text(_('мин. '))],
|
||||
@ -53,9 +46,9 @@ def create_window():
|
||||
Sgi.Text(_('шт. '))],
|
||||
[Sgi.Txt('_' * 46)],
|
||||
[Sgi.Text(_('Моделирование')), Sgi.Push(), Sgi.InputText('0', size=(10, 20), justification='right', ),
|
||||
Sgi.Text(_('руб. '))],
|
||||
Sgi.Text(f'{currency_setts()} ')],
|
||||
[Sgi.Text(_('Постобработка')), Sgi.Push(), Sgi.InputText('0', size=(10, 20), justification='right', ),
|
||||
Sgi.Text(_('руб. '))],
|
||||
Sgi.Text(f'{currency_setts()} ')],
|
||||
[Sgi.Txt('_' * 46)],
|
||||
[Sgi.Txt(' ' * 15), Sgi.ReadFormButton(_('Рассчитать'), size=(10, 2)), Sgi.Cancel(_('Выход'), size=(10, 2))]
|
||||
|
||||
@ -64,6 +57,7 @@ def create_window():
|
||||
|
||||
|
||||
def main():
|
||||
upd_start()
|
||||
window = create_window()
|
||||
|
||||
while True:
|
||||
|
2
lists.py
2
lists.py
@ -22,3 +22,5 @@ themes_list = ['Black', 'BlueMono', 'BluePurple', 'BrightColors', 'BrownBlue', '
|
||||
'SandyBeach', 'SystemDefault', 'SystemDefault1', 'SystemDefaultForReal', 'Tan', 'TanBlue',
|
||||
'TealMono', 'Topanga']
|
||||
lang_list = ['Русский', 'English']
|
||||
|
||||
currency_list = ['руб.', '$', '€']
|
||||
|
Binary file not shown.
BIN
locale/ru_RU/LC_MESSAGES/locale.mo
Normal file
BIN
locale/ru_RU/LC_MESSAGES/locale.mo
Normal file
Binary file not shown.
48
setts.py
48
setts.py
@ -1,23 +1,39 @@
|
||||
import json
|
||||
import PySimpleGUI as Sgi
|
||||
import gettext
|
||||
import os
|
||||
|
||||
from texts import amortization_calc, new_sets
|
||||
from lists import themes_list, lang_list
|
||||
from lists import themes_list, lang_list, currency_list
|
||||
|
||||
|
||||
with open('setts.json') as file:
|
||||
old_data = json.load(file)
|
||||
if old_data['settings']["locale"] == 'English':
|
||||
locale = 'en_US'
|
||||
else:
|
||||
locale = 'ru_RU'
|
||||
def language():
|
||||
with open(os.path.expanduser('setts.json')) as file:
|
||||
old_data = json.load(file)
|
||||
if old_data['settings']["locale"] == 'English':
|
||||
locale = 'en_US'
|
||||
else:
|
||||
locale = 'ru_RU'
|
||||
return locale
|
||||
|
||||
lang = gettext.translation('locale', localedir='locale', languages=[locale])
|
||||
|
||||
lang = gettext.translation('locale', localedir='locale', languages=[language()])
|
||||
lang.install()
|
||||
_ = lang.gettext
|
||||
|
||||
|
||||
def currency_setts():
|
||||
with open('setts.json') as file:
|
||||
old_data = json.load(file)
|
||||
if old_data['settings']["currency"] == 'руб.':
|
||||
currency = 'руб.'
|
||||
elif old_data['settings']["currency"] == '$':
|
||||
currency = '$'
|
||||
else:
|
||||
currency = '€'
|
||||
return currency
|
||||
|
||||
|
||||
def window_setts():
|
||||
with open('setts.json') as file:
|
||||
old_data = json.load(file)
|
||||
@ -29,6 +45,7 @@ def window_setts():
|
||||
mk = old_data["settings"]["mk"]
|
||||
a = old_data["settings"]["a"]
|
||||
locale = old_data['settings']["locale"]
|
||||
currency = old_data['settings']["currency"]
|
||||
try:
|
||||
spi = old_data["settings"]["spi"]
|
||||
except KeyError:
|
||||
@ -46,7 +63,8 @@ def window_setts():
|
||||
[Sgi.Text(_('Тариф электроэнергии, кВт/ч')), Sgi.Push(),
|
||||
Sgi.InputText(h, size=(10, 10), justification='right')],
|
||||
[Sgi.Text(_('Коэффициент выбраковки')), Sgi.Push(), Sgi.InputText(d, size=(10, 10), justification='right')],
|
||||
[Sgi.Text(_('Стоимость катушки, руб.')), Sgi.Push(), Sgi.InputText(st, size=(10, 10), justification='right')],
|
||||
[Sgi.Text(_('Стоимость катушки, ')+f'{currency_setts()}'), Sgi.Push(),
|
||||
Sgi.InputText(st, size=(10, 10), justification='right')],
|
||||
[Sgi.Text(_('Вес катушки, гр.')), Sgi.Push(),
|
||||
Sgi.Combo(['225', '250', '450', '500', '750', '850', '1000', '2250',
|
||||
'2500'], size=(8, 20), default_value=mk)],
|
||||
@ -54,8 +72,8 @@ def window_setts():
|
||||
[Sgi.Text('')]
|
||||
]
|
||||
layout2 = [
|
||||
[Sgi.Text(_('Стоимость вашего принтера, руб.')), Sgi.Push(), Sgi.InputText(a, size=(10, 10),
|
||||
justification='right')],
|
||||
[Sgi.Text(_('Стоимость вашего принтера, ')+f'{currency_setts()}'), Sgi.Push(), Sgi.InputText(a, size=(10, 10),
|
||||
justification='right')],
|
||||
[Sgi.Text(_('Срок полезного использования, лет.')), Sgi.Push(), Sgi.InputText(spi, size=(10, 10),
|
||||
justification='right')],
|
||||
[Sgi.Text('_' * 45)], [Sgi.Text(amortization_calc)],
|
||||
@ -65,6 +83,7 @@ def window_setts():
|
||||
[Sgi.Text(_('Оформление'))],
|
||||
[Sgi.Text(_("Выбор темы")), Sgi.Push(), Sgi.Combo(themes_list, size=(20, 20), default_value=theme)],
|
||||
[Sgi.Text(_("Язык")), Sgi.Push(), Sgi.Combo(lang_list, size=(20, 20), default_value=locale)],
|
||||
[Sgi.Text(_("Валюта")), Sgi.Push(), Sgi.Combo(currency_list, size=(20, 20), default_value=currency_setts())],
|
||||
]
|
||||
|
||||
tab_group = [
|
||||
@ -85,6 +104,10 @@ def window_setts():
|
||||
new_locale = locale
|
||||
else:
|
||||
new_locale = values[9]
|
||||
if values[10] == currency:
|
||||
new_currency = currency
|
||||
else:
|
||||
new_currency = values[10]
|
||||
if values[0] == p:
|
||||
new_p = p
|
||||
else:
|
||||
@ -128,7 +151,8 @@ def window_setts():
|
||||
"a": new_a,
|
||||
"spi": new_spi,
|
||||
"marge": new_marg,
|
||||
"locale": new_locale
|
||||
"locale": new_locale,
|
||||
"currency": new_currency
|
||||
|
||||
}
|
||||
}
|
||||
|
78
texts.py
78
texts.py
@ -2,7 +2,6 @@ import gettext
|
||||
import json
|
||||
import os
|
||||
|
||||
|
||||
if not os.path.isfile('setts.json'):
|
||||
with open('setts.json', 'w') as file:
|
||||
data = {"settings": {"theme": "Dark",
|
||||
@ -14,7 +13,8 @@ if not os.path.isfile('setts.json'):
|
||||
"a": "0",
|
||||
"spi": "3",
|
||||
"marg": "0",
|
||||
"locale": "Ru"}}
|
||||
"locale": "Ru",
|
||||
"currency": "руб."}}
|
||||
json.dump(data, file, indent=2)
|
||||
|
||||
with open('setts.json') as file:
|
||||
@ -28,53 +28,49 @@ lang = gettext.translation('locale', localedir='locale', languages=[locale])
|
||||
lang.install()
|
||||
_ = lang.gettext
|
||||
|
||||
|
||||
calc = (_("Формула расчета стоимости печати выглядит так:\n\n"
|
||||
"S = ((p/1000*t/60*h)+(md*d*st/mk)+am+post))*x+mod\n\n"
|
||||
"где:\n"
|
||||
"S - стоимость печати, руб.\n"
|
||||
"p - мощность принтера, Вт\n"
|
||||
"t - время печати, мин.\n"
|
||||
"h - тариф на электроэнергию, кВт/ч\n"
|
||||
"md - вес детали, гр.\n"
|
||||
"st - стоимость катушки пластика, руб.\n"
|
||||
"mk - вес пластика в катушке, гр.\n"
|
||||
"d - коэффициент выбраковки\n"
|
||||
"am - амортизация, руб.\n"
|
||||
"post - стоимость постобработки, руб.\n"
|
||||
"х - количество печатаемых дубликатов, шт.\n"
|
||||
"mod - стоимость моделирования, руб.\n\n"
|
||||
"При этом в расчете вес детали, умножается на 1.5,\n"
|
||||
"это сделано для выбраковки и тестовой печати,"
|
||||
"т.е. при калькуляции вес одной детали для печати\n"
|
||||
"считается как 1,5 детали "
|
||||
"Можете изменить этот пункт в настройках.\n\n"))
|
||||
"S = ((p/1000*t/60*h)+(md*d*st/mk)+am+post))*x+mod\n\n"
|
||||
"где:\n"
|
||||
"S - стоимость печати, руб.\n"
|
||||
"p - мощность принтера, Вт\n"
|
||||
"t - время печати, мин.\n"
|
||||
"h - тариф на электроэнергию, кВт/ч\n"
|
||||
"md - вес детали, гр.\n"
|
||||
"st - стоимость катушки пластика, руб.\n"
|
||||
"mk - вес пластика в катушке, гр.\n"
|
||||
"d - коэффициент выбраковки\n"
|
||||
"am - амортизация, руб.\n"
|
||||
"post - стоимость постобработки, руб.\n"
|
||||
"х - количество печатаемых дубликатов, шт.\n"
|
||||
"mod - стоимость моделирования, руб.\n\n"
|
||||
"При этом в расчете вес детали, умножается на 1.5,\n"
|
||||
"это сделано для выбраковки и тестовой печати,"
|
||||
"т.е. при калькуляции вес одной детали для печати\n"
|
||||
"считается как 1,5 детали "
|
||||
"Можете изменить этот пункт в настройках.\n\n"))
|
||||
|
||||
about = (_("Программа написана потому, что мне было скучно\n"
|
||||
"Использовать её или нет дело ваше, мне все равно\n"
|
||||
"Распространяется по принципу 'как есть'\n"
|
||||
"По вопросам и предложениям писать в телеграм на @RisenYT\n\n"))
|
||||
about = (_("По вопросам и предложениям писать в телеграм на @RisenYT\n\n"))
|
||||
|
||||
amortization_calc = (_('Как считается амортизация:\n\n'
|
||||
'Отчисления записываются \n'
|
||||
'частями в зависимости от времени \n'
|
||||
'печати конкретного изделия\n'
|
||||
'Рекомендую задавать СПИ (это время\n'
|
||||
'окупаемости принтера) 3 года.\n'
|
||||
'Калькулятор считает амортизацию в\n'
|
||||
'минуту и умножает на количество минут,\n'
|
||||
'которые принтер будет печатать.'))
|
||||
'Отчисления записываются \n'
|
||||
'частями в зависимости от времени \n'
|
||||
'печати конкретного изделия\n'
|
||||
'Рекомендую задавать СПИ (это время\n'
|
||||
'окупаемости принтера) 3 года.\n'
|
||||
'Калькулятор считает амортизацию в\n'
|
||||
'минуту и умножает на количество минут,\n'
|
||||
'которые принтер будет печатать.'))
|
||||
|
||||
not_connect = (_('Невозможно проверить обновление.\n\n'
|
||||
'Отсутствует подключение к интернету\n'
|
||||
'или программа заблокирована фаерволом.\n\n'
|
||||
'Для продолжения работы нажмите "Ok"'))
|
||||
'Отсутствует подключение к интернету\n'
|
||||
'или программа заблокирована фаерволом.\n\n'
|
||||
'Для продолжения работы нажмите "Ok"'))
|
||||
|
||||
new_sets = (_('Задайте стоимость принтера, \n'
|
||||
'срок полезного использования\n'
|
||||
'в настройках амортизации\n'))
|
||||
'срок полезного использования\n'
|
||||
'в настройках амортизации\n'))
|
||||
|
||||
new_marge = (_('Задайте процент желаемой наценки\n'
|
||||
'в настройках (можно просто проставить ноль)'))
|
||||
'в настройках (можно просто проставить ноль)'))
|
||||
|
||||
ver = '0.6.0'
|
||||
ver = '0.6.1'
|
||||
|
11
update.py
11
update.py
@ -6,15 +6,10 @@ import os
|
||||
import gettext
|
||||
|
||||
from texts import ver
|
||||
from setts import language
|
||||
|
||||
with open(os.path.expanduser('setts.json')) as file:
|
||||
old_data = json.load(file)
|
||||
if old_data['settings']["locale"] == 'English':
|
||||
locale = 'en_US'
|
||||
else:
|
||||
locale = 'ru_RU'
|
||||
|
||||
lang = gettext.translation('locale', localedir='locale', languages=[locale])
|
||||
lang = gettext.translation('locale', localedir='locale', languages=[language()])
|
||||
lang.install()
|
||||
_ = lang.gettext
|
||||
|
||||
@ -50,7 +45,7 @@ def upd_check():
|
||||
else:
|
||||
Sgi.theme(set_theme)
|
||||
layout = [
|
||||
[Sgi.Text(_(f"Последняя версия: {version_new}\nВаша версия: {version_old}\n\nОбновление не требуется"))],
|
||||
[Sgi.Text(_('Последняя версия: ')+f'{version_new}'+_('\nВаша версия: ')+f'{version_old}'+_('\n\nОбновление не требуется'))],
|
||||
[Sgi.Button(_(' Закрыть '))]
|
||||
]
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user