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

Функции в pyqt5

07.10.2020, 00:39. Показов 1593. Ответов 5

Студворк — интернет-сервис помощи студентам
С QTableWIdget всё было понятно, а с QTableView даже с функциями морока какая-то. То же самое делаю, но не работает. В классе окна задал функцию, которая устанавливает текст по умолчанию в lineEdit, для проверки. Привязал кнопку к этой функции через clicked. Ничего не срабатывает, хотя и прога после нажатия кнопки не вылетает

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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
from for_mix import Ui_MainWindow
import sys
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtCore import Qt
from datetime import datetime
 
 
class TableModel(QtCore.QAbstractTableModel):
    def __init__(self, data):
        super(TableModel, self).__init__()
        self._data = data
        self.horizontalHeaderLabels = []
 
    def setHorizontalHeaderLabels(self, horizontalHeaderLabels):
        self.horizontalHeaderLabels = horizontalHeaderLabels
 
    def headerData(self, section, orientation, role=Qt.DisplayRole):
        if (orientation == Qt.Horizontal and role == Qt.DisplayRole and len(
                self.horizontalHeaderLabels) == self.columnCount(None)):
            return self.horizontalHeaderLabels[section]
        return super().headerData(section, orientation, role)
 
    def data(self, index, role):
        if role == Qt.DisplayRole:
            # Get the raw value
            value = self._data[index.row()][index.column()]
 
            # Perform per-type checks and render accordingly.
            if isinstance(value, datetime):
                # Render time to YYY-MM-DD.
                return value.strftime("%Y-%m-%d")
 
            if isinstance(value, float):
                # Render float to 2 dp
                return "%.2f" % value
 
            if isinstance(value, str):
                # Render strings with quotes
                return '"%s"' % value
 
            # Default (anything not captured above: e.g. int)
            return value
 
        if role == Qt.ForegroundRole:
            value = self._data[index.row()][index.column()]
 
            if (
                    (isinstance(value, int) or isinstance(value, float))
                    and value < 0
            ):
                return QtGui.QColor('red')
 
    def rowCount(self, index):
        # The length of the outer list.
        return len(self._data)
 
    def columnCount(self, index):
        # The following takes the first sub-list, and returns
        # the length (only works if all rows are an equal length)
        return len(self._data[0])
 
 
class MainWindow(QtWidgets.QMainWindow):
    def __init__(self):
        super(MainWindow, self).__init__()
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)
 
        self.table = QtWidgets.QTableView()
        self.setWindowTitle("Шахматисты")
        self.resize(800, 600)
 
        data = [
            [4, 9, 'hello', 4, 9, 'hello'],
            [1, 0, 0, 4, 9, 'hello'],
            [3, 5, 0, 4, 9, 'hello'],
            [3, -3, 2, 4, 9, 'hello'],
            [7, 8, 9, 4, 9, 'hello'],
        ]
 
        self.model = TableModel(data)
        self.model.setHorizontalHeaderLabels(['Name', 'Age', 'Sex', 'Name', 'Age', 'Sex'])
        self.table.setModel(self.model)
        self.table.setMinimumSize(800, 400)
        self.table.setMaximumSize(800, 400)
        self.setCentralWidget(self.table)
        self.button1 = QtWidgets.QPushButton('ОЧИСТИТЬ', self)
        self.button1.resize(100, 60)
        self.button1.move(30, 420)
        self.button2 = QtWidgets.QPushButton('УДАЛИТЬ', self)
        self.button2.resize(100, 60)
        self.button2.move(30, 500)
        self.button3 = QtWidgets.QPushButton('ДОБАВИТЬ', self)
        self.button3.resize(100, 60)
        self.button3.move(150, 420)
        self.button4 = QtWidgets.QPushButton('СОРТИРОВКА', self)
        self.button4.resize(100, 60)
        self.button4.move(150, 500)
        self.button5 = QtWidgets.QPushButton('НАЙТИ', self)
        self.button5.resize(100, 60)
        self.button5.move(270, 420)
        self.button6 = QtWidgets.QPushButton('ИНФО', self)
        self.button6.resize(100, 60)
        self.button6.move(270, 500)
        self.lineEdit = QtWidgets.QLineEdit(self)
        self.lineEdit.resize(350, 140)
        self.lineEdit.move(400, 420)
        self.ui.pushButton.clicked.connect(self.function1)
 
    def function1(self):
        self.ui.lineEdit.setPlaceholderText("Hi")
 
 
app = QtWidgets.QApplication([])
application = MainWindow()
application.show()
 
sys.exit(app.exec())
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
07.10.2020, 00:39
Ответы с готовыми решениями:

Все методы и атрибуты PyQt5.QtGui PyQt5.Qtwdigets и QtCore
На официальной документации модуля я не нашёл все методы и атрибуты PyQt5. может дадите источник со всем этим добром??? Буду вам очень...

Как отвязать кнопку от функции? PyQt5
Здравствуйте! Кнопки в pyqt привязываются так: button.clicked.connect(func). Но если выполнить эту команду n раз - func вызовется n. ...

Обращение к функции модуля из окна PyQt5
Добрый день! Помогите пожалуйста решить проблему: Возможно будут проблемы с терминологией, попытаюсь объяснить максимально...

5
963 / 718 / 276
Регистрация: 10.12.2016
Сообщений: 1,764
07.10.2020, 00:54
Цитата Сообщение от KaffLime Посмотреть сообщение
self.lineEdit = QtWidgets.QLineEdit(self)
        self.lineEdit.resize(350, 140)
        self.lineEdit.move(400, 420)
        self.ui.pushButton.clicked.connect(self. function1)
def function1(self):
        self.ui.lineEdit.setPlaceholderText("Hi" )
lineEdit - ui.lineEdit разные объекты
1
0 / 0 / 0
Регистрация: 05.05.2020
Сообщений: 227
09.10.2020, 00:32  [ТС]
Да, с этим разобрался, но то была лишь проверка на работу кнопки. Как я могу, допустим, очистить таблицу? Мне это нужно всё преимущественно через table делать или как? Ведь там нет функции clear(), как в QTableWidget, а мне говорили, что на View тоже практически все эти функции в 1 - 2 строки выполняются

Добавлено через 16 минут
О, я догадался как это сделать... Вот только это ещё было просто, а вот соритровка и проче... ))

Добавлено через 10 минут
А нет, рановато я очистку со счетов сбросил
0
Фрилансер
 Аватар для Black Fregat
3709 / 2083 / 567
Регистрация: 31.05.2009
Сообщений: 6,683
09.10.2020, 01:47
Цитата Сообщение от KaffLime Посмотреть сообщение
Как я могу, допустим, очистить таблицу?
Очистить модель, обновить View
Цитата Сообщение от KaffLime Посмотреть сообщение
Ведь там нет функции clear()
Где нет? В модели? Так заведите
1
963 / 718 / 276
Регистрация: 10.12.2016
Сообщений: 1,764
09.10.2020, 03:49
Лучший ответ Сообщение было отмечено KaffLime как решение

Решение

Цитата Сообщение от KaffLime Посмотреть сообщение
Ведь там нет функции clear()
QTableWidget - QStandardItemModel/QTableView
все операции над данными - в модели, вьюха - отображение

Добавлено через 1 минуту
для вашего случая -
Python
1
self.data = [[]]
1
0 / 0 / 0
Регистрация: 05.05.2020
Сообщений: 227
09.10.2020, 11:21  [ТС]
О, я так и сделал, разве что скобок доп. внутри не поставил. В таком случае ещё надо добавить условие на пустоту data. При работе таблица очищается только после нажатия кнопки и после нажатия внутри таблицы, только тогда. Много раз нажав эту кнопку может закрыться приложение
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
09.10.2020, 11:21
Помогаю со студенческими работами здесь

Unable to import 'PyQt5' / No module named 'PyQt5' /
Здравствуйте. Имеется Ubuntu 18.04. Хочу использовать pyside2. Установил PyQt5. :~$ pip install PyQt5 Defaulting to user...

Как в PyQt5 остановить выполнение функции
Есть потребность остановить выполнение функции при помощи кнопки в PyQt5. Как я себе это представляю: при помощи кнопки вызываю...

PyQt5 Error while finding module specification for 'PyQt5.uic.pyuic' (ModuleNotFoundError: No module named 'PyQt
В общем поставил pyqt5 и python3.7 пишу в консоль python -m PyQt5.uic.pyuic Выдает ошибку Error while finding module specification for...

Pyqt5
Напишите программу с хорошо разработанным, разработанным и протестированным графическим интерфейсом, который может обрабатывать и...

PyQt5
Здравствуйте, столкнулся c проблемой, просьба помочь. Делаю программу с использованием библиотеки PyQt5, в которой открывается окно и после...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru