Таблицы и стили
Сами по себе таблицы выглядят довольно «бедно», к тому же браузеры по-своему отображают некоторые характеристики таблиц, в частности, рамки. Вместе с тем эти недостатки легко исправить воспользовавшись мощью стилей. При этом весьма расширяются средства по оформлению таблиц, что позволяет удачно вписать таблицы в дизайн сайта и нагляднее представить табличные данные.
Цвет фона ячеек
Цвет фона одновременно всех ячеек таблицы устанавливается через свойство background , которое применяется к селектору TABLE . При этом следует помнить о правилах использования стилей, в частности, наследовании свойств элементов. Хотя свойство background не наследуется, для ячеек значением фона по умолчанию выступает transparent , т.е. прозрачность, поэтому эффект заливки фона получается и у ячеек. Если одновременно с TABLE задать цвет у селектора TD или TH , то этот цвет будет установлен в качестве фона ячейки (пример 2.3).
Пример 2.3. Цвет фона
XHTML 1.0 CSS 2.1 IE Cr Op Sa Fx
Таблицы Заголовок 1 Заголовок 2 Ячейка 3 Ячейка 4
Результат данного примера показан на рис. 2.4.
Рис. 2.4. Изменение цвета фона
Поля внутри ячеек
Пример 2.4. Поля в таблицах
XHTML 1.0 CSS 2.1 IE Cr Op Sa Fx
Таблицы Заголовок 1 Заголовок 2 Ячейка 3 Ячейка 4
В данном примере с помощью группирования селекторов поля установлены одновременно для селектора TD и TH . Результат примера показан на рис. 2.5.

Рис. 2.5. Поля в ячейках
Расстояние между ячейками
Свойство border-spacing действует только в том случае, если для селектора TABLE не задано свойство border-collapse со значением collapse (пример 2.5).
Пример 2.5. Расстояние между границами ячеек
XHTML 1.0 CSS 2.1 IE 7 IE 8+ Cr Op Sa Fx
Замена cellspacing Леонардо 5 8 Рафаэль 4 11 Микеланджело 24 9 Донателло 2 13
Результат данного примера показан на рис. 2.6.

Рис. 2.6. Вид таблицы при использовании border-spacing
Браузер Internet Explorer до седьмой версии включительно не поддерживает свойство border-spacing , поэтому в этом браузере для таблиц будет применяться значение cellspacing заданное по умолчанию (обычно оно равно 2px).
При добавлении к селектору TABLE свойства border-collapse со значением collapse , атрибут cellspacing игнорируется, а значение border-spacing обнуляется.
Границы и рамки
Использование атрибута cellspacing
Заметим, что это не совсем удобный способ создания границ, поскольку он имеет ограниченную область применения. Так можно получить только одноцветную сетку, а не вертикальные или горизонтальные линии в нужных местах.
Применение свойства border
Стилевое свойство border одновременно устанавливает цвет границы, её стиль и толщину вокруг элемента. Когда требуется создать отдельные линии на разных сторонах, лучше использовать производные — border-left , border-right , border-top и border-bottom , эти свойства соответственно определяют границу слева, справа, сверху и снизу.
Применяя свойство border к селектору TABLE , мы добавляем рамку вокруг таблицы в целом, а к селектору TD или TH — рамку вокруг ячеек (пример 2.6).
Пример 2.6. Добавление двойной рамки
XHTML 1.0 CSS 2.1 IE Cr Op Sa Fx
Таблицы Заголовок 1 Заголовок 2 Ячейка 3 Ячейка 4
В данном примере используется двойная рамка черного цвета вокруг самой таблицы и сплошная рамка белого цвета вокруг каждой ячейки. Результат примера показан на рис. 2.7.

Рис. 2.7. Граница вокруг таблицы и ячеек
Пример 2.7. Создание одинарной рамки
XHTML 1.0 CSS 2.1 IE Cr Op Sa Fx
Таблицы Заголовок 1 Заголовок 2 Ячейка 3 Ячейка 4
В данном примере создается сплошная линия зеленого цвета между ячейками и черная вокруг таблицы. Все границы внутри таблицы имеют одинаковую толщину. Результат примера показан на рис. 2.8.

Рис. 2.8. Граница вокруг таблицы
Выравнивание содержимого ячеек
По умолчанию текст в ячейке таблицы выравнивается по левому краю. Исключением из этого правила служит тег , он определяет заголовок, в котором выравнивание происходит по центру. Чтобы изменить способ выравнивания применяется стилевое свойство text-align (пример 2.8).
Пример 2.8. Выравнивание содержимого ячеек по горизонтали
XHTML 1.0 CSS 2.1 IE Cr Op Sa Fx
Таблицы Заголовок 1 Ячейка 1 Ячейка 2 Заголовок 2 Ячейка 3 Ячейка 4

Рис. 2.9. Выравнивание текста в ячейках
Выравнивание по вертикали в ячейке всегда происходит по её центру, если это не оговорено особо. Это не всегда удобно, особенно для таблиц, у которых содержимое ячеек различается по высоте. В таком случае выравнивание устанавливают по верхнему краю ячейки с помощью свойства vertical-align , как показано в примере 2.9.
Пример 2.9. Выравнивание содержимого ячеек по вертикали
XHTML 1.0 CSS 2.1 IE Cr Op Sa Fx
Таблицы Заголовок 1 Заголовок 2 Ячейка 1 Ячейка 2
В данном примере устанавливается высота заголовка как 40 пикселов и выравнивание текста происходит по нижнему краю. Результат примера показан на рис. 2.10.

Рис. 2.10. Выравнивание текста в ячейках
Пустые ячейки
Браузеры иначе отображают ячейку, внутри которой ничего нет. «Ничего» в данном случае означает, что внутрь ячейки не добавили ни рисунок, ни текст, причём пробел в расчёт не принимается. Естественно, вид ячеек различается только в том случае, если вокруг них установлена граница. При использовании невидимой рамки, вид ячеек, независимо от того, есть в них что-нибудь или нет, совпадает.
Старые браузеры не отображали цвет фона пустых ячеек вида , поэтому в том случае, когда требовалось оставить ячейку без содержимого, но отобразить цвет фона, внутрь ячейки добавляли неразделяемый пробел ( ). Пробел не всегда подходит, особенно когда нужно установить высоту ячейки 1–2 пиксела, из-за чего широкое распространение получил однопиксельный прозрачный рисунок. Действительно, такой рисунок можно масштабировать на свое усмотрение, но он на веб-странице никак не отображается.
К счастью эпоха однопиксельных рисунков и всяческих распорок на их основе прошла. Браузеры достаточно корректно работают с таблицами и без присутствия содержимого ячеек.
Для управления видом пустых ячеек используется свойство empty-cells , при значении hide граница и фон в пустых ячейках не отображается. Если все ячейки в строке пустые, то строка прячется целиком. Ячейка считается пустой в следующих случаях:
- нет вообще никаких символов;
- в ячейке содержится только перевод строки, символ табуляции или пробел;
- значение visibility установлено как hidden .
Добавление неразрывного пробела воспринимается как видимое содержание, т.е. ячейка уже будет не пустой (пример 2.10).
Пример 2.10. Пустые ячейки
XHTML 1.0 CSS 2.1 IE Cr Op Sa Fx
Использование empty-cells Леонардо 5 8 Рафаэль 11 Микеланджело 24 Донателло 13
Вид таблицы в браузере Safari показан на рис. 2.11а. Та же таблица в браузере IE7 продемонстрирована на рис. 2.11б.

а. В браузере Safari, Firefox, Opera, IE8, IE9

б. В браузере IE7
Рис. 2.11. Вид таблицы с пустыми ячейками
Как поменять цвет таблицы в html
Для стилизации ячеек таблиц можно использовать как свойства background , так и border .
Исходный HTML документ:
Заголовок 1 class="bg-2">Заголовок 2 class="bg-1">Ячейка 3 Ячейка 4
table background: #cadetblue; /* Цвет фона таблицы */ border: 2px dashed #000; /* Рамка вокруг таблицы */ > td, th padding: 10px; /* Поля вокруг текста */ border: 1px solid #fff; /* Рамка вокруг ячеек */ > .bg-1 background: #burlywood; > .bg-2 background: #darkgreen; >
67. Работаем с цветами в HTML таблице
Меняем цвет текста, фон и цвет рамок в таблице, строке, ячейке
Именно свойство color служит для изменения цвета текста и не обязательно в таблице, а где угодно на веб странице. Цвет можно задать по названию, шестнадцатеричным числом, RGB, RGBA, HSL и HSLA. Далее пример:
Пример 1, CSS
table color: #FF0000;
>
Пример 2, CSS
tr color: green;
>
Пример 3, CSS
td color: rgb(0, 0, 200);
>
Свойство background-color или просто background служит для изменения фона блока, таблицы, ячейки и прочего. Цвет можно задать по названию, шестнадцатеричным числом, RGB, RGBA, HSL и HSLA. Далее пример:
Пример 4, CSS
td background: rgb(0, 0, 255);
color: #FFFFFF;
padding: 10px;
>
Свойство мы уже немного научились пользоваться универсальным свойством border (позже мы его еще вспомним), но здесь мы использовать будем узкоспециализированное свойство border-color , которое меняет только цвет рамок, в отличие от border (сразу три значения можно установить: толщина, стиль и цвет). Далее пример:
Пример 5, CSS
table width: 100%; /* Ширина 100% */
text-align: center; /* Выравнивание по центру */
/* border: 2px solid #000000 */ /* Равно трем строкам ниже */
border-width: 2px; /* Толщина рамки */
border-style: solid; /* Стиль рамки */
border-color: #000000; /* Цвет рамки */
>
td background: rgb(105, 0, 105); /* Фон фиолетовый */
color: #FFFFFF; /* Цвет текста белый */
padding: 10px; /* Поля 10px */
>
Как можно изменить цвет таблицы с текстом в таблице?
Может ещё кто подскажет, как сделать clicked у QLabel, то голову сломал не могу найти этот метод у него или как можно click повесить на QLabel?
Отслеживать
6,343 5 5 золотых знаков 25 25 серебряных знаков 54 54 бронзовых знака
задан 17 окт 2018 в 18:36
639 5 5 серебряных знаков 18 18 бронзовых знаков
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
Достаточно просто можете применить встроенную в Qt таблицу стилей (qss)
from PyQt5 import QtWidgets import sys class Main(QtWidgets.QWidget): def __init__(self): super().__init__() self.resize(440, 180) self.table = QtWidgets.QTableWidget() self.setStyleSheet(""" QTableWidget < background-color: #000; color: #fff; >""") self.table.setColumnCount(4) for i in range(4): self.table.insertRow(0) for j in range(4): self.table.setItem(0, j, QtWidgets.QTableWidgetItem(str(j))) layout = QtWidgets.QVBoxLayout() layout.addWidget(self.table) self.setLayout(layout) if __name__ == "__main__": app = QtWidgets.QApplication(sys.argv) main = Main() main.show() sys.exit(app.exec_())
Или использовать альтернативу создавая каждый элемент QTableWidgetItem и применять к нему цвет фона и цвет текста
from PyQt5 import QtWidgets, QtGui import sys class Main(QtWidgets.QWidget): def __init__(self): super().__init__() self.resize(440, 180) self.table = QtWidgets.QTableWidget() self.table.setColumnCount(4) for i in range(4): self.table.insertRow(0) for j in range(4): a = QtWidgets.QTableWidgetItem(str(j)) a.setForeground(QtGui.QColor("#fff")) a.setBackground(QtGui.QColor("#000")) self.table.setItem(0, j, a) layout = QtWidgets.QVBoxLayout() layout.addWidget(self.table) self.setLayout(layout) if __name__ == "__main__": app = QtWidgets.QApplication(sys.argv) main = Main() main.show() sys.exit(app.exec_())
