CONTROL PARAMETRS SYSTEMS OMRON

Статус
Закрыто для дальнейших ответов.

Livek

Новичок
Пользователь
Апр 5, 2023
22
1
3
Доброго дня УВАЖАЕМЫЕ Питоны:D.
Прошу вашей помощи по написанию небольшой программки для мониторинга физических величин энергоблока.
По железу что имеется: Передатчик - Ардуино Мега 2560, шильд винтовой, wifi module NRF24, это то что будет служить сбором информации с нужных точек.( ПО для передатчика уже написано)
Приемник: тот же модуль NRF24, Orange pi zero 2. ( вот для этого ни чего еще не готово корме как заготовок картинок для интерфейса)
Про orange pi: ОС-Orangepizero2 3.0.6 debian bullseye desktop xfce linux5.16.17. монитор с расширением экрана 1280*1024, клавиатура, мышь, распечатанная коробочка под плату апельсина, винт, переходник mini HDMI to VGA.
Собственно в апельсин уже закатал пакеты Python 2,7, 3.5, 3,8. На компе под ОС Windows 10 64-разрядная операционная система, установлен pythom 3.11, так же установлена программа VScode Версия: 1.77.0. Ну собственно и все.
Что пробовал: пользоваться библиотекой tkinter в программе VScode по созданию объектов куски кода подсмотрел с сайта https://habr.com/
вот часть кода:
from tkinter import * import math def aMeterC(nowValue,x,y,widgLen,widgHigh,maxValue,outerColor,nameValue): c = Canvas(root,width=widgLen,height=widgHigh,bg="black",bd=0, highlightthickness=0, relief='ridge') c.place(x=x, y=y) return (c,'ameter',x,y,widgLen,widgHigh,maxValue,outerColor,nameValue) def aMeter(c,nowValue,x,y,widgLen,widgHigh,maxValue,outerColor,nameValue): if(nowValue > maxValue): nowValue=maxValue-1 devValue=float(180) / float(maxValue) mesureValue = devValue * nowValue x1 = widgLen/2 y1 = widgHigh/2 + 10 x2 = 10 y2 = widgHigh/2 + 10 angle = math.pi * int(mesureValue) / 180; newx = ((x2-x1)*math.cos(angle)-(y2-y1)*math.sin(angle)) + x1 newy = ((x2-x1)*math.sin(angle)+(y2-y1)*math.cos(angle)) + y1 c.create_oval(1 , 1,widgLen-1 ,widgHigh-1,width=2,fill='black',outline=outerColor) c.create_text(7,y1,font="Verdana 10",anchor="w",justify=CENTER,fill=outerColor,text='0') c.create_text(widgLen-30,y1,font="Verdana 10",anchor="w",justify=CENTER,fill=outerColor,text=str(maxValue)) c.create_text(widgLen/2-10,10,font="Verdana 10",anchor="w",justify=CENTER,fill=outerColor,text=str(maxValue/2)) c.create_text(widgLen/8,widgHigh/4,font="Verdana 10",anchor="w",justify=CENTER,fill=outerColor,text=str(maxValue/4)) c.create_text(widgLen/2+widgLen/4,widgHigh/4,font="Verdana 10",anchor="w",justify=CENTER,fill=outerColor,text=str(maxValue-maxValue/4)) c.create_text(widgLen/2-20,widgHigh-40,font="Verdana 14",anchor="w",justify=CENTER,fill=outerColor,text=str(nowValue)) c.create_rectangle(0,widgHigh/2+18,widgLen ,widgHigh,fill='black',outline='black') c.create_text(widgLen/2-20,widgHigh-40,font="Verdana 14",anchor="w",justify=CENTER,fill=outerColor,text=str(nowValue)) c.create_text(6,widgHigh-20,font="Verdana 10",anchor="w",justify=CENTER,fill=outerColor,text=str(nameValue)) c.create_oval(x1 - 10, y1 - 10, x1+ 10,y1 + 10,fill=outerColor,outline=outerColor) c.create_line(x1,y1,newx,newy,width=5,fill=outerColor) def jobMeter(): global mesureValue analogString[0].delete("all") lenVal = len(mesureValue)+1 mesureValue.append(lenVal) if(len(mesureValue) == 80): mesureValue=None mesureValue=[] root = Tk() canv = Canvas(root,width=1900,height=950,bg="black") canv.place(x=0, y=25) analogString=aMeterC(250,200,150,150,150,1000,'green','analog Meter') global mesureValue mesureValue=[] root.mainloop()
Да, работает, но все же не то... Перечитал несколько статей по созданию интерфейса в Tkinter, сколько людей столько и вариантов написания кода, вообщем долго разбирался, разбирался да так и не разобрался.
Попробовал сделать окно программы, да получилось, но вот вставить в нее готовые PNG с изображением приборов так и не получилось (что то делаю не так)
# CONTROL PARAMETRS SYSTEMS OMRON from tkinter import * from tkinter import messagebox window = Tk() #Создаём окно приложения. window.title("CONTROL PARAMETRS SYSTEMS OMRON") window.mainloop() window.geometry('1280x1024')
Дальше уже отчаялся совсем, что ни чего не получается... ну примерно как из того мультика про котенка и кубики(с матом)
Подскажите пожалуйста, как можно реализовать интерфейс вот такого вида с двигающимися стрелочками и светящимися индикаторами. Примерный вид интерфейса на картиночке.
За ранее спасибо всем откликнувшимся.
 

Вложения

  • scale.png
    scale.png
    230,2 КБ · Просмотры: 1

Livek

Новичок
Пользователь
Апр 5, 2023
22
1
3
Вобщем разобрался с картинками:ROFLMAO:, почему не хотели вставать в код и выполнятся, банально слеши стояли не в ту сторону вместо "/" стояли в "\" теперь надо разобраться с позиционированием картинок на рабочем поле. так что у меня не все потерено....
# CONTROL PARAMETRS SYSTEMS OMRON import tkinter root = tkinter.Tk() frame = tkinter.Frame(root) frame.grid() canvas = tkinter.Canvas(root, height=400, width=700) img = tkinter.PhotoImage(file = 'g:/Images/UI_preview_new_no.png') image = canvas.create_image(0, 0, anchor='nw',image=img) canvas.grid(row=2,column=1) root.mainloop()
изменил название рабочего поля: с "tk" на "CONTROL PARAMETRS SYSTEMS OMRON"
# CONTROL PARAMETRS SYSTEMS OMRON import tkinter root = tkinter.Tk() root.title ('CONTROL PARAMETRS SYSTEMS OMRON') frame = tkinter.Frame(root) frame.grid() canvas = tkinter.Canvas(root, height=200, width=400) img = tkinter.PhotoImage(file = 'g:/Images/UI_preview_new_no.png') image = canvas.create_image(0, 0, anchor='nw',image=img) canvas.grid(row=2,column=1) root.mainloop()
 
Последнее редактирование:

Livek

Новичок
Пользователь
Апр 5, 2023
22
1
3
Добился немного результатов получил. 6 окон с встроенными картинками. картинку правда использовал одну, знаменитого художника, для внешнего вида. Теперь бы понять как сделать все таки рабочее поле заданных размеров и уместить в него эти 6 "подполикв" кароч 6 окон в которых и будет происходить весь процесс.:rolleyes:2023-04-06 at 22-45-57.png
Python:
# CONTROL PARAMETRS SYSTEMS OMRON

import tkinter
root = tkinter.Tk()
root.title ('CONTROL PARAMETRS SYSTEMS OMRON')

frame = tkinter.Frame(root) 
frame.grid()

canvas = tkinter.Canvas(root, height=400, width=400)
img1 = tkinter.PhotoImage(file = 'g:/Images/BL.png')
image = canvas.create_image(50, 20, anchor='nw',image=img1)
canvas.grid(row=0,column=0)

canvas = tkinter.Canvas(root, height=400, width=400)
img2 = tkinter.PhotoImage(file = 'g:/Images/BL.png')
image = canvas.create_image(50, 20, anchor='nw',image=img2)
canvas.grid(row=0,column=1)

canvas = tkinter.Canvas(root, height=400, width=400)
img3 = tkinter.PhotoImage(file = 'g:/Images/BL.png')
image = canvas.create_image(50, 20, anchor='nw',image=img3)
canvas.grid(row=0,column=2)

canvas = tkinter.Canvas(root, height=400, width=400)
img4 = tkinter.PhotoImage(file = 'g:/Images/BL.png')
image = canvas.create_image(50, 20, anchor='nw',image=img4)
canvas.grid(row=1,column=0)

canvas = tkinter.Canvas(root, height=400, width=400)
img5 = tkinter.PhotoImage(file = 'g:/Images/BL.png')
image = canvas.create_image(50, 20, anchor='nw',image=img5)
canvas.grid(row=1,column=1)

canvas = tkinter.Canvas(root, height=400, width=400)
img6 = tkinter.PhotoImage(file = 'g:/Images/BL.png')
image = canvas.create_image(50, 20, anchor='nw',image=img6)
canvas.grid(row=1,column=2)
root.mainloop()
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 599
464
83
Добился немного результатов получил. 6 окон с встроенными картинками. картинку правда использовал одну, знаменитого художника, для внешнего вида. Теперь бы понять как сделать все таки рабочее поле заданных размеров и уместить в него эти 6 "подполикв" кароч 6 окон в которых и будет происходить весь процесс.:rolleyes:Посмотреть вложение 2294
Python:
# CONTROL PARAMETRS SYSTEMS OMRON

import tkinter
root = tkinter.Tk()
root.title ('CONTROL PARAMETRS SYSTEMS OMRON')

frame = tkinter.Frame(root)
frame.grid()

canvas = tkinter.Canvas(root, height=400, width=400)
img1 = tkinter.PhotoImage(file = 'g:/Images/BL.png')
image = canvas.create_image(50, 20, anchor='nw',image=img1)
canvas.grid(row=0,column=0)

canvas = tkinter.Canvas(root, height=400, width=400)
img2 = tkinter.PhotoImage(file = 'g:/Images/BL.png')
image = canvas.create_image(50, 20, anchor='nw',image=img2)
canvas.grid(row=0,column=1)

canvas = tkinter.Canvas(root, height=400, width=400)
img3 = tkinter.PhotoImage(file = 'g:/Images/BL.png')
image = canvas.create_image(50, 20, anchor='nw',image=img3)
canvas.grid(row=0,column=2)

canvas = tkinter.Canvas(root, height=400, width=400)
img4 = tkinter.PhotoImage(file = 'g:/Images/BL.png')
image = canvas.create_image(50, 20, anchor='nw',image=img4)
canvas.grid(row=1,column=0)

canvas = tkinter.Canvas(root, height=400, width=400)
img5 = tkinter.PhotoImage(file = 'g:/Images/BL.png')
image = canvas.create_image(50, 20, anchor='nw',image=img5)
canvas.grid(row=1,column=1)

canvas = tkinter.Canvas(root, height=400, width=400)
img6 = tkinter.PhotoImage(file = 'g:/Images/BL.png')
image = canvas.create_image(50, 20, anchor='nw',image=img6)
canvas.grid(row=1,column=2)
root.mainloop()
вы же понимаете, что вам нужно будет в зависимости от приходящих данных изменять эти картинки? или менять только положение стрелки?
то есть у вас есть какой то протокол? скорее всего сетевой? это я к вопросу про по на датчиках...
 

Livek

Новичок
Пользователь
Апр 5, 2023
22
1
3
вы же понимаете, что вам нужно будет в зависимости от приходящих данных изменять эти картинки? или менять только положение стрелки?
то есть у вас есть какой то протокол? скорее всего сетевой? это я к вопросу про по на датчиках...
Данные будут приходить с ардуино мега через nrf24 пакетами. Двигать нужно будет только стрелки. Датчики на приемнике будут стоять аналоговые, то есть преобразователь напряжения в напряжение. На вход подаётся сетьевое напряжение на выходе напряжени равное напряжению входному на аналоговых входах ардуино. Приемником будет служить тот такой же nrf24 Картинки будут стоять постоянно.
Сегодня не до программирования было. С утра и до позднего вечера передний мост уазика перебирал....
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 599
464
83
Картинки будут стоять постоянно.
стрелки это тоже картинки...
 

Livek

Новичок
Пользователь
Апр 5, 2023
22
1
3
стрелки это тоже картинки...
В tkinter есть возможность отрисовывать линии, буду пробовать через него.
У меня собственно всё ещё висит вопрос: как зафиксировать размеры рабочего окна? В каком месте нужно подправить код.чтоб правильно расставить картинки, надписи и ещё пару окон с digital индикаторами. Кстати картинки приборов уже готовы. Будет время закину их в код. Да и можно же анимировать картинки вроде бы....
 
Последнее редактирование:

Livek

Новичок
Пользователь
Апр 5, 2023
22
1
3
Доброго дня! Расставил по местам приборы. сделал надписи.(Но что то мне они не очень)
2023-04-10 at 16-00-17.png
собственно вопрос в том как отцентровать надписи, чтоб они были по центру группы приборов?, и еще один вопрос такого плана, надпись должна будет менять цвет заливки и надпись с "GEN1 ONLINE" на "GEN1 OFFLINE" ну то есть не цвет надписи, а цвет заливки окна.
И собственно еще вопрос: как добавить Digital индикаторы под приборы?
За ранее спасибо за советы.
да и может быть я как то не правильно вижу картину в поиске решения. если есть предложение по изменению в коде предлагайте.
Python:
# CONTROL PARAMETRS SYSTEMS OMRON

import tkinter
root = tkinter.Tk()
root.title ('CONTROL PARAMETRS SYSTEMS OMRON')

frame = tkinter.Frame(root) # создаем рабочую область

frame.grid()
# устанавливаем надписи над группой приборов
canvas = tkinter.Canvas(root, bg="white", height=20, width=400, ) # высота и ширина области расположения надписи
canvas.create_text(10, 0, font="Arial 14", anchor='nw',text="GEN 1")
canvas.grid(row=0,columnspan=2,)

canvas = tkinter.Canvas(root, bg="white", height=20, width=200, ) # высота и ширина области расположения надписи
canvas.create_text(10, 0, font="Arial 14", anchor='nw',text="POWER LIMIT")
canvas.grid(row=0,column=2)

canvas = tkinter.Canvas(root, bg="white", height=20, width=400, ) # высота и ширина области расположения надписи
canvas.create_text(10, 0, font="Arial 14", anchor='nw',text="GEN 2")
canvas.grid(row=0,column=3, columnspan=2)

# устанавливаем PNG изображения приборов
canvas = tkinter.Canvas(root, height=200, width=200)
img1 = tkinter.PhotoImage(file = 'g:/Images/Volts_full_200.png')
image = canvas.create_image(0, 0, anchor='nw',image=img1)
canvas.grid(row=1,column=0)

canvas = tkinter.Canvas(root, height=200, width=200)
img2 = tkinter.PhotoImage(file = 'g:/Images/Amperes_full_200.png')
image = canvas.create_image(0, 0, anchor='nw',image=img2)
canvas.grid(row=1,column=1)

canvas = tkinter.Canvas(root, height=200, width=200)
img3 = tkinter.PhotoImage(file = 'g:/Images/Power_limit_full_200.png')
image = canvas.create_image(0, 0, anchor='nw',image=img3)
canvas.grid(row=1,column=2)

canvas = tkinter.Canvas(root, height=200, width=200)
img4 = tkinter.PhotoImage(file = 'g:/Images/Volts_full_200.png')
image = canvas.create_image(0, 0, anchor='nw',image=img4)
canvas.grid(row=1,column=3)

canvas = tkinter.Canvas(root, height=200, width=200)
img5 = tkinter.PhotoImage(file = 'g:/Images/Amperes_full_200.png')
image = canvas.create_image(0, 0, anchor='nw',image=img5)
canvas.grid(row=1,column=4)

# устанавливаем надписи над группой приборов
canvas = tkinter.Canvas(root, bg="white", height=20, width=400, )
canvas.create_text(10, 0, font="Arial 14", anchor='nw',text="SCR 1")
canvas.grid(row=2,columnspan=2,)

canvas = tkinter.Canvas(root, bg="white", height=20, width=200, )
canvas.create_text(10, 0, font="Arial 14", anchor='nw',text="TEMP BOX")
canvas.grid(row=2,column=2)

canvas = tkinter.Canvas(root, bg="white", height=20, width=400, )
canvas.create_text(10, 0, font="Arial 14", anchor='nw',text="SCR 2")
canvas.grid(row=2,column=3, columnspan=2)


canvas = tkinter.Canvas(root, height=200, width=200)
img6 = tkinter.PhotoImage(file = 'g:/Images/Volts_full_200.png')
image = canvas.create_image(0, 0, anchor='nw',image=img6)
canvas.grid(row=3,column=0)

canvas = tkinter.Canvas(root, height=200, width=200)
img7 = tkinter.PhotoImage(file = 'g:/Images/Amperes_full_200.png')
image = canvas.create_image(0, 0, anchor='nw',image=img7)
canvas.grid(row=3,column=1)

canvas = tkinter.Canvas(root, height=200, width=200)
img8 = tkinter.PhotoImage(file = 'g:/Images/Temp_hum_full_200.png')
image = canvas.create_image(0, 0, anchor='nw',image=img8)
canvas.grid(row=3,column=2)

canvas = tkinter.Canvas(root, height=200, width=200)
img9 = tkinter.PhotoImage(file = 'g:/Images/Volts_full_200.png')
image = canvas.create_image(0, 0, anchor='nw',image=img9)
canvas.grid(row=3,column=3)

canvas = tkinter.Canvas(root, height=200, width=200)
img10 = tkinter.PhotoImage(file = 'g:/Images/Amperes_full_200.png')
image = canvas.create_image(0, 0, anchor='nw',image=img10)
canvas.grid(row=3,column=4)

root.mainloop()
 

Вложения

  • Amperes_full_200.png
    Amperes_full_200.png
    22,7 КБ · Просмотры: 1
  • Power_limit_full_200.png
    Power_limit_full_200.png
    19,5 КБ · Просмотры: 1
  • Temp_hum_full_200.png
    Temp_hum_full_200.png
    20,7 КБ · Просмотры: 0
  • Volts_full_200.png
    Volts_full_200.png
    22,6 КБ · Просмотры: 0
Последнее редактирование:
  • Мне нравится
Реакции: robisho

Livek

Новичок
Пользователь
Апр 5, 2023
22
1
3
собственно где менять цвет заливки я понял.
canvas = tkinter.Canvas(root, bg="white", height=20, width=400, ); bg=white, следует изменить на green & red. (y) что будет соответствовать включено или выключено. в принципе можно и добавить еще пару строк для отображения GEN 1 ONLINE или OFFLINE и т.д..
Вот понимаю чтоб красиво читалось надо делать все через canvas. Все окна в интерфейсе, но у меня почему то не получается добавить надписи через canvas так чтоб было гладко и расположено там где надо по координатам
 
Последнее редактирование:

Livek

Новичок
Пользователь
Апр 5, 2023
22
1
3
Доброго утра. сегодня сделал немного интерфейсик по объемнее. вчера уже пририсовали рандомную стрелку к одной каритнке.
отцентровал надписи. Осталось добавить digital индикаторы под АVUmeters.

2023-04-11 at 09-51-37.png

Python:
# CONTROL PARAMETRS SYSTEMS OMRON

import tkinter
root = tkinter.Tk()
root.title ('CONTROL PARAMETRS SYSTEMS OMRON')

frame = tkinter.Frame(root) # создаем рабочую область

frame.grid()
# устанавливаем надписи над группой приборов
canvas = tkinter.Canvas(root, relief='ridge', borderwidth=0, bd=8, bg="green", height=40, width=400, ) # высота и ширина области расположения надписи
canvas.create_text(200, 30,  font="Arial 18", anchor='center',text="GEN-1")
canvas.grid(row=0,column=0,columnspan=2,)

canvas = tkinter.Canvas(root, relief='ridge', borderwidth=0, bd=8, bg="yellow", height=40, width=200, ) # высота и ширина области расположения надписи
canvas.create_text(110, 30, font="Arial 18", anchor='center',text="POWER LIMIT")
canvas.grid(row=0,column=2)

canvas = tkinter.Canvas(root, relief='ridge', borderwidth=0, bd=8, bg="red", height=40, width=400, ) # высота и ширина области расположения надписи
canvas.create_text(200, 30, font="Arial 18", anchor='center',text="GEN-2")
canvas.grid(row=0,column=3, columnspan=2)

# устанавливаем PNG изображения приборов
canvas = tkinter.Canvas(root, relief='ridge', borderwidth=0, bd=8, height=200, width=200)
img1 = tkinter.PhotoImage(file = 'g:/Images/Volts_full_200.png')
image = canvas.create_image(12, 10, anchor='nw',image=img1)
canvas.grid(row=1,column=0)

canvas = tkinter.Canvas(root, relief='ridge', borderwidth=0, bd=8, height=200, width=200)
img2 = tkinter.PhotoImage(file = 'g:/Images/Amperes_full_200.png')
image = canvas.create_image(12, 10, anchor='nw',image=img2)
canvas.grid(row=1,column=1)

canvas = tkinter.Canvas(root, relief='ridge', borderwidth=0, bd=8, height=200, width=200)
img3 = tkinter.PhotoImage(file = 'g:/Images/Power_limit_full_200.png')
image = canvas.create_image(12, 10, anchor='nw',image=img3)
canvas.grid(row=1,column=2)

canvas = tkinter.Canvas(root, relief='ridge', borderwidth=0, bd=8, height=200, width=200)
img4 = tkinter.PhotoImage(file = 'g:/Images/Volts_full_200.png')
image = canvas.create_image(12, 10, anchor='nw',image=img4)
canvas.grid(row=1,column=3)

canvas = tkinter.Canvas(root, relief='ridge', borderwidth=0, bd=8, height=200, width=200)
img5 = tkinter.PhotoImage(file = 'g:/Images/Amperes_full_200.png')
image = canvas.create_image(12, 10, anchor='nw',image=img5)
canvas.grid(row=1,column=4)

# устанавливаем надписи над группой приборов
canvas = tkinter.Canvas(root,relief='ridge', borderwidth=0, bd=8, bg="red", height=40, width=400, )
canvas.create_text(200, 30, font="Arial 18", anchor='center',text="SCR-1")
canvas.grid(row=2,columnspan=2,)

canvas = tkinter.Canvas(root, relief='ridge', borderwidth=0, bd=8, bg="white", height=40, width=200, )
canvas.create_text(110, 30, font="Arial 18", anchor='center',text="TEMP BOX")
canvas.grid(row=2,column=2)

canvas = tkinter.Canvas(root, relief='ridge', borderwidth=0, bd=8, bg="green", height=40, width=400, )
canvas.create_text(200, 30, font="Arial 18", anchor='center',text="SCR-2")
canvas.grid(row=2,column=3, columnspan=2)


canvas = tkinter.Canvas(root,relief='ridge', borderwidth=0, bd=8, height=200, width=200)
img6 = tkinter.PhotoImage(file = 'g:/Images/Volts_full_200.png')
image = canvas.create_image(12, 10, anchor='nw',image=img6)
canvas.grid(row=3,column=0)

canvas = tkinter.Canvas(root, relief='ridge', borderwidth=0, bd=8, height=200, width=200)
img7 = tkinter.PhotoImage(file = 'g:/Images/Amperes_full_200.png')
image = canvas.create_image(12, 10, anchor='nw',image=img7)
canvas.grid(row=3,column=1)

canvas = tkinter.Canvas(root, relief='ridge', borderwidth=0, bd=8, height=200, width=200)
img8 = tkinter.PhotoImage(file = 'g:/Images/Temp_hum_full_200.png')
image = canvas.create_image(12, 10, anchor='nw',image=img8)
canvas.grid(row=3,column=2)

canvas = tkinter.Canvas(root, relief='ridge', borderwidth=0, bd=8, height=200, width=200)
img9 = tkinter.PhotoImage(file = 'g:/Images/Volts_full_200.png')
image = canvas.create_image(12, 10, anchor='nw',image=img9)
canvas.grid(row=3,column=3)

canvas = tkinter.Canvas(root, relief='ridge', borderwidth=0, bd=8, height=200, width=200)
img10 = tkinter.PhotoImage(file = 'g:/Images/Amperes_full_200.png')
image = canvas.create_image(12, 10, anchor='nw',image=img10)
canvas.grid(row=3,column=4)

root.mainloop()

Добавлю еще по одной строке под приборчиками и надо поставить цифроотображение. сижу думаю....
Вобщем верхняя надпись будет менять цвет с красного на зеленый то есть включено или выключено, Надпись "POWER LIMIT" будет менять цвет зеленый желтый красный в зависимости от нагрузки.... дальше пока хз))) думаем...
 
Последнее редактирование:

Livek

Новичок
Пользователь
Апр 5, 2023
22
1
3
Прикрепил внизу окна под горизонтальный слайдер.
2023-04-11 at 12-58-30.png
Теперь вопрос как сделать правильное его заполнение согласно полученным значениям.
Python:
def hMeterC(nowValue,x,y,widgLen,widgHigh,maxValue,outerColor,nameValue):
     c = Canvas(root,width=widgLen+50,height=widgHigh+40,bg="black",bd=0, highlightthickness=0, relief='ridge')
     c.place(x=x, y=y)
     if(nowValue > maxValue): nowValue=maxValue-1
     devValue=float(widgLen) / float(maxValue)
     mesureValue = devValue * nowValue
     c.create_rectangle(1,1,widgLen,widgHigh,fill='black',outline=outerColor)
     c.create_rectangle(2,2,int(mesureValue),widgHigh-1,fill='red',outline='red')
     c.create_line(1,widgHigh,1,widgHigh+5,width=1,fill=outerColor)
     c.create_line(widgLen,widgHigh,widgLen,widgHigh+5,width=1,fill=outerColor)
     c.create_line(1+widgLen/4,widgHigh,1+widgLen/4 ,widgHigh+5,width=1,fill=outerColor)
     c.create_line(1+widgLen/2,widgHigh,1+widgLen/2 ,widgHigh+5,width=1,fill=outerColor)
     c.create_line(1+widgLen-widgLen/4,widgHigh,1+widgLen-widgLen/4 ,widgHigh+5,width=1,fill=outerColor)
     c.create_text(0,widgHigh+10,font="Verdana 10",anchor="w",justify=CENTER,fill='white',text='0')
     c.create_text(widgLen -10,widgHigh+10,font="Verdana 10",anchor="w",justify=CENTER,fill='white',text=str(maxValue))
     c.create_text(widgLen/2 -10,widgHigh+10,font="Verdana 10",anchor="w",justify=CENTER,fill='white',text=str(int(maxValue/2)))
     c.create_text(widgLen/4-10,widgHigh+10,font="Verdana 10",anchor="w",justify=CENTER,fill='white',text=str(int(maxValue/4)))
     c.create_text(widgLen-widgLen/4-10,widgHigh+10,font="Verdana 10",anchor="w",justify=CENTER,fill='white',text=str(int(maxValue-maxValue/4)))
     c.create_text(widgLen/2 -10,widgHigh-8,font="Verdana 12",anchor="w",justify=CENTER,fill='white',text=str(int(nowValue)))
     c.create_text(1,widgHigh+21,font="Verdana 10",anchor="w",justify=CENTER,fill='white',text=nameValue)
     return (c,'hmeter',x,y,widgLen,widgHigh,maxValue,outerColor,nameValue)
пробовал вытворить вот из этого куска кода но ....
 

Livek

Новичок
Пользователь
Апр 5, 2023
22
1
3
ну вобщем понятно. поддержки здесь не получить. и помощи тоже.
закрываю тему
 
Статус
Закрыто для дальнейших ответов.

Форум IT Специалистов