getting keyboard events with pyqt - python

i converted recently from wxpython to pyqt and im still facing alot of problems since im still noob in pyqt
so is it possible to detected if user pressed (CTRL+key ) in pyqt ? and how ?
i've been trying to find an answer for this for 3 days . if you know website or a good place to learn pyqt, it will be highly appreciated
thanx in advance

Add a QShortcut and listen to its activated() signal, then perform the action in the slot.
Or you could reimplement QWidget and define keyPressEvent to what you like. Check for the event parameter's modifiers() and key() to see if they match with what you want. This listens for shortcut keys when the QWidget has focus.

As for websites to learn, this is the official documentation - it takes some getting used to, but is quite helpful once you get the lay of the land (so to speak). This tutorial is what I walked through to get the initial idea, before discovering the documentation.
Good luck!
P.S. You might also look at QAction, if you are trying to map your Ctrl+X to an action that may also be performed by a menu or toolbar button... It incorporates a shortcut along with icons and/or text in a very convenient package. Just FYI.

Related

Embedding Chrome browser in python QT GUI?

I have a python GUI that opens a Chrome window using Seleium. Is there any way in the PyQT GUI to embed the Chrome browser's window so there are not 2 separate windows and its just the GUI? Guessing not possible but worth it to ask.
I have been looking to do exactly the same. I don't have a complete answer but hopefully some of what I found will be of use to others who are trying to do this as well.
It IS possible to embed the window of an outside application into a Python QT application. While I could quote various reference pages I have found that the following question gives most of the information and a good starting point to find more:
QT 5.5 embed external application into QWidget
Now, that requires knowing the Window ID but that isn't too hard to find. You can do that in Windows at least as described here:
http://timgolden.me.uk/python/win32_how_do_i/find-the-window-for-my-subprocess.html
As I said, this isn't a complete answer but should put anyone else following this trail several steps closer to the complete answer. Good luck everyone and if you find the complete answer please share it.

Pyside QItemDelegates in QListView

I've been searching the internet far and wide for a tutorial on creating custom items for QListView using PySide. I find some usage using PyQt but I find them really strange to me. I would like to recreate using PySide the appearance of the items of the list shown in this link since I'm creating a desktop version of this web application. Any help/idea/sample code is greatly appreciated.
This question is pretty broad considering that you haven't shared any code. Nonetheless, let me point you to a good resource I found very useful getting into MVC programming in PyQt/PySide:
http://www.yasinuludag.com/blog/?p=98
He touches on ListView here and that may give you a better idea of how you can implement custom models and views.
He uses PySide from my recollection. Either ways, PyQt and PySide code are pretty much identical.
Another approach would be to not use QListView but use a QScrollArea and throw in the list items as widgets inside it. Each widget would be standard Qt widgets with a layout, sub widgets and styled as you need. Check this out for a similar scenario: PyQt: How can I create a custom scroll area?
Hope this helps.

Creating a multi-screen application using Qt Designer

I'm using Qt Designer to create UI designs which I'm then converting into python code. Since I'm quite new to Qt I'd like to ask: is there a way I could implement a multi-screen application? I.e. having a next button clicked and getting a new set of options/widgets etc within the same window.
To be honest, I was developing using Kivy, and as slick as that is (especially with multiple screens) it depends on PyGame, which proves to be an enormous portability headache, so I had to switch to something else, and PyQt was the next feasible option (or so it seems).
It's called a QWizard. It is not called a multi screen application, but if you search for wizard instead, you find lots of information.
Links
Example with C++ code
[PyQt QWizard documentation] http://pyqt.sourceforge.net/Docs/PyQt4/qwizard.html

GUI toolkit for creating fully customized UIs? If I were going for a completely non-os native look, which toolkit would you suggest?

I've been asked to build a gui for a friend. We're going for a fully custom look. All buttons, states, widgets, etc.. will be will be drawn by an artist. The only native widget I foresee needing is a listbox (because I'm not entirely sure how I would build one from scratch).
Additional requirements are mp3 playback support.
The list of available frameworks on python.org is pretty daunting! Could anyone suggest a good starting point?
I apologize for the open ended-ness of the question!
Build it with pygame would be my advice.
That will give you a pixel identical GUI on all platforms - ideal if you have an artist make everything for you.
You'll have to implement your own listbox, but pygame plays mp3s just fine.

Python with beautiful UI + glass effect

I'm a new in Python.
I would like to know can I create good interface on python, something like WPF?
I didn't find any glass effect with PyQt. It's really important for my decision.
Thanks.
I'm sorry that I didn't give a lot of details. I need to port WPF app to python. The main goal I still need a good UI. Can I make something like this
http://www.codeproject.com/KB/silverlight/SilverlightGlassOrbButton.aspx?msg=3170079
on python? Can I use different styles for mouseover and normal state?
Glass effect is probably a Qt skin and has nothing to do with Python in particular. People say that there's a tutorial for Qt skinning. I failed to quickly google a ready-made glass-like skin, though.
Also, in the new QT RC there is a new support system for GUI related stuff. QML it is called, and examples can be found here. I do not know if it alreade wrapped in PyQT but I suppose it is possible to use it in combination with PyQT.
If glass effect = transparency, then Qt supports this, but it requires a special flag set on the window. See http://doc.qt.nokia.com/qq/qq16-background.html for some examples.
If you want a blurred background, then I doubt it can be done as easily, since not many GUI-frameworks that Qt supports do compositing like Vista & Win7, so it's probably hard to abstract into a cross-platform toolkit.
But simpler things might be possible, and with QGraphicsScene, you can do a lot of these things yourself (but not w.r.t. the window's background, IIUC).
If you have no luck with Qt, wxPython can do it. See How to draw a transparent frame in wxpython.
You can check out the fluent app library

Categories