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

Ограничение ввода в QTable

16.10.2018, 01:14. Показов 6305. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый вечер,форумчане!
Подскажите,пожалуйста,как можно сделать "защиту от дурака" ?
Так ,чтобы в ячейки таблицы можно было ввести только числа>0,а пустой ввод или другие символы игнорировались.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
16.10.2018, 01:14
Ответы с готовыми решениями:

Переключение между полями и ограничение пользовательского ввода
Здравствуйте. Подскажите как организовать следующую задачу на примере базового фрагмента. import tkinter from tkinter import* ...

Ограничение ввода всего кроме диапазона от 0 до 360 в Line Edit
Добрый день, подскажите пожалуйста, как ограничить ввод в Line Edit всего, кроме диапазона от 0 до 360 целых чисел. Изначально Line Edit...

Ограничение ввода в entry
Здравствуйте.Можно ли ограничить количество знаков после запятой вводимого в поле Entry числа float? Спасибо.

14
1741 / 913 / 480
Регистрация: 05.12.2013
Сообщений: 3,074
16.10.2018, 02:12
Есть специальный класс QValidator, им и пользуются для проверки ввода
1
0 / 0 / 0
Регистрация: 28.05.2018
Сообщений: 70
16.10.2018, 09:59  [ТС]
ТабуретY, да-да,я пытался это сделать для проверки каждой ячейки нескольких столбцов,но похоже,не к тому цепляю
Python
1
2
3
For m in range (0,4):
 
self.table.Item(m,1).SetValidator(QDoubleValidator(0.0,99.0,self))
0
963 / 718 / 276
Регистрация: 10.12.2016
Сообщений: 1,764
16.10.2018, 21:35
это через QItemDelegate делается, валидатор заточен под QLineEdit
/questions/977367/validating-user-input-in-a-qtableview
чот ссылка не вставляется (qaru + site)

Добавлено через 7 минут
Python
1
url= 'http://**********/questions/977367/validating-user-input-in-a-qtableview'
Добавлено через 28 секунд
шифруются, сволочи
1
0 / 0 / 0
Регистрация: 28.05.2018
Сообщений: 70
16.10.2018, 22:17  [ТС]
vic5710, а к самому объекту (таблице) такого нельзя применить? Я пока не могу понять, как делегатов делать,буду благодарен за полезную ссылку по ним) .А то только с++ в поиске,команды все -таки другие(.
Или через исключения или оператор если?
0
963 / 718 / 276
Регистрация: 10.12.2016
Сообщений: 1,764
17.10.2018, 00:07
ну есть сигнал itemChanged, можно повесить на него слот, но это будет постфактум
а валидатор просто блокирует редактор
Цитата Сообщение от InsomniacG Посмотреть сообщение
А то только с++ в поиске,команды все -таки други
про Qt лучше читать именно с++, команды те же, а документировано лучше
1
0 / 0 / 0
Регистрация: 28.05.2018
Сообщений: 70
17.10.2018, 00:22  [ТС]
vic5710, Сигнал пойдет,я буду выводить сообщение об ошибке ввода в случае неверного типа или пустого ввода .
Можно пример такого ,пожалуйста?)
0
963 / 718 / 276
Регистрация: 10.12.2016
Сообщений: 1,764
17.10.2018, 07:39
примерно так
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
from PyQt5 import Qt 
 
class W(Qt.QMainWindow):
    def __init__(self):
        super().__init__()
        self.table = Qt.QTableWidget(3,1)
        self.table.itemChanged.connect(self.on_item)
        self.setCentralWidget(self.table)
 
    def on_item(self):
        self.statusBar().showMessage(self.table.currentItem().text())
        
 
 
if __name__=="__main__":
    app = Qt.QApplication([])
    w = W()
    w.show()
    app.exec_()
0
0 / 0 / 0
Регистрация: 28.05.2018
Сообщений: 70
18.10.2018, 21:57  [ТС]
vic5710, выходит окно с ошибкой,но можно ли вообще при обработке вводить ограничение?
То есть ввести любые данные ,а после этого посмотреть подходят ли они под конкретный тип данных ,в моем случае float.
Типа если введенные данные нельзя из стринга во флоат перевести .
0
963 / 718 / 276
Регистрация: 10.12.2016
Сообщений: 1,764
18.10.2018, 22:32
Цитата Сообщение от InsomniacG Посмотреть сообщение
выходит окно с ошибко
УМВР
Python
1
2
3
4
5
6
7
8
 def on_item(self):
        item = self.table.currentItem()
        try:
            n = float(item.text())
            self.statusBar().showMessage('OK')
        except:
            item.setText('')
            self.statusBar().showMessage('ERROR')
1
0 / 0 / 0
Регистрация: 28.05.2018
Сообщений: 70
18.10.2018, 22:33  [ТС]
vic5710, я пока до чего -то в этом роде додумался.
Python
1
2
3
            if  type(D,float) and type(Do,float) and type(a,float) and type(b,float) and type(P,float) is False:
                QMessageBox.about(ex, "Ошибка", "Вводимые данные должны быть больше нуля")
                break
0
963 / 718 / 276
Регистрация: 10.12.2016
Сообщений: 1,764
18.10.2018, 22:39

Python
1
2
3
4
5
6
7
>>> n = 5
>>> type(n) is float
False
>>> n = 5.0
>>> type(n) is float
True
>>>
0
0 / 0 / 0
Регистрация: 28.05.2018
Сообщений: 70
18.10.2018, 22:51  [ТС]
vic5710, да-да-да,понимаю,а можно ли как -то if type(n,float) or type(n,int) and type(b,float) or type(b,int) is False:
0
963 / 718 / 276
Регистрация: 10.12.2016
Сообщений: 1,764
19.10.2018, 10:28
Python
1
2
3
4
5
6
7
8
>>> help(type)
Help on class type in module builtins:
 
class type(object)
 |  type(object_or_name, bases, dict)
 |  type(object) -> the object's type
 |  type(name, bases, dict) -> a new type
 |
так как вы - нет
Python
1
if (type(x) is float or type(x) is int) and (type(y) is float or type(y) is int)
так можно
1
0 / 0 / 0
Регистрация: 28.05.2018
Сообщений: 70
20.10.2018, 02:06  [ТС]
vic5710, а я придумал по-другому))
Через исключения Runtime,Value,TypeError
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
20.10.2018, 02:06
Помогаю со студенческими работами здесь

Ограничение ввода пользователю
Как ограничить ввод пользователю, так чтобы он не мог вводить ничего кроме чисел, не использую try, числа при этом любые Добавлено...

Ограничение на время ввода данных
как поставить ограничение на время ввода данных в питоне к примеру #ввод данных num = int(input()) #если пользователь не ввел...

Ограничение ввода числовым диапазоном
Добрый день! Есть код. В нем нужно ограничить ввод букв, чтобы пользователь вводил только цифры от 1 до 8. При вводе иных цифр или букв...

Ограничение на время ввода данных
import time as t import requests from bs4 import BeautifulSoup HOST = "https://amedia.online/" URL = "https://amedia.online/" ...

Ограничение ввода буквенных значений для переменных
Есть код. Нужно ограничть ввод дынных посредством try\except. a = input('Значение a: ') A = int(a) b = input('Значение b: ') ...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru