Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » GUI
  • » Qt 4.7 + pyHook = тормоза при сворачивании, минимизации, закрытии окна [RSS Feed]

#1 Март 29, 2010 11:27:09

Dimka665
От:
Зарегистрирован: 2008-09-19
Сообщения: 177
Репутация: +  0  -
Профиль   Отправить e-mail  

Qt 4.7 + pyHook = тормоза при сворачивании, минимизации, закрытии окна

Qt 4.7.2, Python 2.6, Windows XP SP3
При помощи pyHook ловятся события мыши.
Проблема в том, что при нажатии на кнопки сворачивании, минимизации и закрытия окна курсор замирает, кнопка остается в зажатом положении секунды 3-4, потом только происходит соответствующее действие. Если, например, закрывать окно другим способом, то работает нормально.

# -*- coding: utf-8 -*-
import sys
import pyHook

from PyQt4 import QtCore, QtGui
from mainwindow import Ui_MainWindow

class WidgetWithUiAsAttr(QtGui.QMainWindow):
def __init__(self, parent=None):
QtGui.QWidget.__init__(self, parent)
self.ui = Ui_MainWindow()
self.ui.setupUi(self)

def on_mouse_event(event):
form.setWindowTitle('%s x %s' % event.Position)
return True

if __name__ == '__main__':
app = QtGui.QApplication(sys.argv)

form = WidgetWithUiAsAttr()
form.show()

hm = pyHook.HookManager()
hm.MouseMove = on_mouse_event

# включаем перехват движения мыши
form.connect(form.ui.pushButton, QtCore.SIGNAL("clicked()"),
lambda : hm.HookMouse())
# выключаем
form.connect(form.ui.pushButton_2, QtCore.SIGNAL("clicked()"),
lambda : hm.UnhookMouse())
# если закрывать окно так, то работает отлично
form.connect(form.ui.pushButton_3, QtCore.SIGNAL("clicked()"),
lambda : form.close())

app.exec_()
hm.UnhookMouse()
sys.exit()
mainwindow.py:
# -*- coding: utf-8 -*-
from PyQt4 import QtCore, QtGui

class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(432, 254)
MainWindow.setLocale(QtCore.QLocale(QtCore.QLocale.Russian, QtCore.QLocale.RussianFederation))
self.centralwidget = QtGui.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.pushButton = QtGui.QPushButton(self.centralwidget)
self.pushButton.setGeometry(QtCore.QRect(10, 10, 201, 101))
self.pushButton.setObjectName("pushButton")
self.pushButton_2 = QtGui.QPushButton(self.centralwidget)
self.pushButton_2.setGeometry(QtCore.QRect(230, 10, 191, 101))
self.pushButton_2.setObjectName("pushButton_2")
self.pushButton_3 = QtGui.QPushButton(self.centralwidget)
self.pushButton_3.setGeometry(QtCore.QRect(10, 120, 411, 91))
self.pushButton_3.setObjectName("pushButton_3")
MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtGui.QMenuBar(MainWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 432, 20))
self.menubar.setObjectName("menubar")
self.menu = QtGui.QMenu(self.menubar)
self.menu.setObjectName("menu")
MainWindow.setMenuBar(self.menubar)
self.statusbar = QtGui.QStatusBar(MainWindow)
self.statusbar.setObjectName("statusbar")
MainWindow.setStatusBar(self.statusbar)
self.menubar.addAction(self.menu.menuAction())

self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)

def retranslateUi(self, MainWindow):
MainWindow.setWindowTitle(QtGui.QApplication.translate("MainWindow", "MainWindow", None, QtGui.QApplication.UnicodeUTF8))
self.pushButton.setText(QtGui.QApplication.translate("MainWindow", "Включить", None, QtGui.QApplication.UnicodeUTF8))
self.pushButton_2.setText(QtGui.QApplication.translate("MainWindow", "Выключить", None, QtGui.QApplication.UnicodeUTF8))
self.pushButton_3.setText(QtGui.QApplication.translate("MainWindow", "Выход", None, QtGui.QApplication.UnicodeUTF8))
self.menu.setTitle(QtGui.QApplication.translate("MainWindow", "Настройки", None, QtGui.QApplication.UnicodeUTF8))



Офлайн

  • Начало
  • » GUI
  • » Qt 4.7 + pyHook = тормоза при сворачивании, минимизации, закрытии окна[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version