Форум программистов, компьютерный форум, киберфорум
Python: GUI, графика
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/8: Рейтинг темы: голосов - 8, средняя оценка - 5.00
4 / 4 / 0
Регистрация: 19.12.2012
Сообщений: 41

Кнопка в виде шестиугольника

25.12.2014, 23:47. Показов 1801. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет! Передо мной поставлена такая задача: есть соты, нужно сделать так, чтобы при нажатии на отдельную соту менялся цвет этой соты. Не подскажите, как это реализовать? Вот код этих сот:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
import sip
sip.setapi('QVariant', 2)
 
from PyQt4 import QtCore, QtGui
 
#import basicdrawing_rc
import math
 
class RenderArea(QtGui.QWidget):
    Polygon = range(1)
 
    def __init__(self, parent=None):
        super(RenderArea, self).__init__(parent)
        self.shape = RenderArea.Polygon
 
    def getPolygon6(self, x, y):
        return QtGui.QPolygon([
            QtCore.QPoint(x+30, y-50),
            QtCore.QPoint(x+80, y-50),
            QtCore.QPoint(x+110, y),
            QtCore.QPoint(x+80, y+50),
            QtCore.QPoint(x+30, y+50),
            QtCore.QPoint(x, y)
        ])
 
    def sizeHint(self):
        return QtCore.QSize(600, 500)
 
    def paintEvent(self, event):
        painter = QtGui.QPainter(self)
        if self.shape == RenderArea.Polygon:
            for x_p in range (100, 400, 160):
                for y_p in range(100, 400, 100):
                    painter.drawPolygon(self.getPolygon6(x_p, y_p))
                for y_p in range(150, 400, 100):
                    painter.drawPolygon(self.getPolygon6(x_p+80, y_p))
        painter.restore()
 
class Window(QtGui.QWidget):
    def __init__(self):
        super(Window, self).__init__()
        self.renderArea = RenderArea()
        mainLayout = QtGui.QGridLayout()
        mainLayout.addWidget(self.renderArea, 0, 0, 1, 4)
        self.setLayout(mainLayout)
        self.setWindowTitle("Basic Drawing")
        
    
if __name__ == '__main__':
    import sys
    app = QtGui.QApplication(sys.argv)
    window = Window()
    window.show()
    sys.exit(app.exec_())
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
25.12.2014, 23:47
Ответы с готовыми решениями:

Разработать программу построения окна в виде шестиугольника
Используя код как образец, помогите разработать программу построения окна в виде шестиугольника. какие координаты нужно, чтобы получилось...

Создание кнопки в виде шестиугольника
Всем привет! У меня такое задание: создать шестиугольник и сделать так, чтобы при нажатии на его область выводилось любое сообщение. Сам...

Сделать обводку для картинки в виде шестиугольника
Использую flexslider. В качестве thumb'ов использую картинки шестиугольников разных цветов. Для текущей thumb-картинки присваивается класс...

3
Эксперт Python
 Аватар для dondublon
4653 / 2073 / 366
Регистрация: 17.03.2012
Сообщений: 10,183
Записей в блоге: 6
29.12.2014, 10:42
Укажите, в чём конкретно проблема.
Отследить нажатие именно в шестиугольнике, с точки зрения геометрии, или сменить цвет. Или чтобы оно выглядело как кнопка, по краям. Или ещё что.
0
4 / 4 / 0
Регистрация: 19.12.2012
Сообщений: 41
29.12.2014, 21:45  [ТС]
Нужно сделать так, чтобы при нажатии на одну соту, эта сота поменяла цвет. Пока не понятно как отследить нажатие именно в шестиугольнике. Если я правильно понимаю, то нужно задать 24 if-a. Так ли это?

Добавлено через 45 минут
Или можно все под один if занести?
0
Эксперт Python
 Аватар для dondublon
4653 / 2073 / 366
Регистрация: 17.03.2012
Сообщений: 10,183
Записей в блоге: 6
30.12.2014, 07:32
Не понимаю, где тут место для 24 if-ов.
If должен быть один, в нём максимум 6 условий, через and. Шестиугольник ограничен шестью прямыми, относительно каждой надо проверить, что точка лежит, где надо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
30.12.2014, 07:32
Помогаю со студенческими работами здесь

Написать программу, которая получает десять чисел и выводит их в консоль в виде шестиугольника, в середине которого отображается сумма всех этих чисел
Извиняюсь за нагласть ну ето я ваще не понимаю как делать !

Кнопка в виде картинки
А как можно сделать кнопку в виде картинки подскажите плз.

Кнопка в виде трапеции
С CSS знаком недавно, пользуюсь из-за необходимости и погружаться в него не хочется. Есть задача - сделать кнопку нестандартной формы....

Кнопка в виде стрелки
Нужно сделать кнопку, в виде стрелочки вправо, тоесть правую сторону кнопки "сломать" по центру и этот центр выдвинуть. Возможно ли...

Кнопка в виде крестика
Ev_Hyper, в вот еще немного в другой сфере не поможете? Хочу сделать кнопку: просто крестик такой обьемный внутри. У меня есть этот самый...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при создании или изменении элементов справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи электронной. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru