#qt #pyqt #pyside #touchscreen
#qt #pyqt #pyside #сенсорный экран
Вопрос:
На моем компьютере с сенсорным экраном я получаю предупреждение, когда использую простой Qt combobox (в PySide):
class MyComBox(QtGui.QWidget):
def __init__(self):
QtGui.QWidget.__init__(self)
comboxText=["Hi", "Bye", "Give me a warning"]
self.comBox=QtGui.QComboBox(self)
self.comBox.addItems(comboxText)
self.comBox.move(20,40)
self.setGeometry(100, 100, 200, 100)
self.show()
Когда я создаю экземпляр графического интерфейса, графический интерфейс выглядит так, как я ожидаю, но когда я нажимаю на выпадающее меню, я получаю следующее предупреждение в своей оболочке:
QAccessibleWidget::rect: This implementation does not support subelements! (ID 1 unknown for QWidget)
Хотя это несколько безобидно, я бы хотел, чтобы это исчезло, поскольку это отвлекает, когда оно появляется каждый раз, когда кто-то нажимает на combobox. Google мало что дал по этой теме, за исключением следующего связанного обсуждения:
http://www.daz3d.com/forums/viewthread/6773 /
Я на Windows 7 и Python 2.7, работаю под управлением Anaconda. Обратите внимание, что я получаю эту ошибку только на моем ноутбуке Dell с сенсорным экраном, но не на моих рабочих столах (ни один из которых не является сенсорным экраном). Все это Windows 7, но ноутбук с сенсорным экраном — Dell Inspiron 15z, «пониженный» с Windows 8.
Из-за отсутствия людей, которые обсуждают со мной эту проблему, ясно, что это кажется мне довольно локализованным. Поэтому я отправил это как отчет об ошибке на сайте проекта Qt (https://bugreports.qt-project.org/browse/PYSIDE-242 ). Я обновлю здесь, если что-нибудь услышу в ответ.
Комментарии:
1. Ваш код выглядит совсем как обычный, идеально подходящий PySide с использованием кода. Также в CPython вы не получаете никаких предупреждений. Скорее всего, это проблема с IPython.
2. Просто попробовал на моем компьютере с сенсорным экраном и даже из командной строки Windows, когда я запускаю код, я получаю ту же ошибку. Так что это не вина IPython…
Ответ №1:
Поток http://niftools.sourceforge.net/forum/viewtopic.php?f=24amp;t=2147 указывает, что это проблема с поддержкой специальных возможностей Qt на некоторых сенсорных / планшетах. Можете ли вы попробовать отключить Tablet PC Components
(или, в Vista, Tablet PC Optional Components
) от Control Panel -> Program Features -> Turn Windows Features On or Off
, как упоминалось в последнем сообщении, и проверить, работает ли это.
Кроме того, если вы просто хотите подавить предупреждение, поскольку оно безвредно, вы можете установить свой собственный обработчик сообщений с помощью QtCore.qInstallMsgHandler()
И это, скорее всего, проблема Qt, чем проблема PySide.
Комментарии:
1. это сработало, спасибо, что разгадали эту загадку (или, по крайней мере, более полезно указали на ее вероятный источник). Как ни странно, мои функции сенсорного экрана, похоже, работают нормально, даже если эта функция отключена, поэтому я не уверен, что именно отключено, и не смог найти хорошее описание в Интернете того, что
Tablet PC Components
делает (я только что нашел это минимальное неописуемое описание: winsupersite.com/article/faqtip /… ). У кого-нибудь есть хорошее описание?
Ответ №2:
У меня была такая же проблема в windows8. Остановка службы TabletInputService, казалось, исправила это для меня