[python] PySide for gui
-
On 29/10/2015 at 00:05, xxxxxxxx wrote:
Hi
I wanna say thanks to maxon, for recent enhancements for python bridge.Alternative ide for ui - qtdesigner, transferring of data to python by _pyside-uic
_
a few recent tests with pyside 1.2.4 _in c4d
or kraken by Hybride Technologies for FE
upd.
i remove pic from dead image hoster
_ -
On 29/10/2015 at 10:30, xxxxxxxx wrote:
What new enhancements?
I've been using PySide ( and also C++ Qt gui code ) in my plugins for this same kind of thing in R13 for a while now.
I'm even launching Qt based dialogs from C4D plugins that can interact with the scene objects.
Of course they can't be docked like a GeDialog.What new enhancements have they added for Qt since R13?
-ScottA
-
On 29/10/2015 at 10:49, xxxxxxxx wrote:
Scott, i tried before, got different glitches and crashes - probably i had a few amount of experience or wrong python/pyside*. I'm studying qt/pyside
* - even today, i post issue at kraken's git, about wrong display of node body(rounded rectangle)... resolved by new pyside v.1.2.4... before was same as for houdini or maya - 1.2.2
-----so even, i create such topic
Of course they can't be docked like a GeDialog.
yes,
but can be to create more complex qt dialog. -
On 29/10/2015 at 11:28, xxxxxxxx wrote:
Scott, have you try to build widgets, for windows os? Example(macos or linux) https://github.com/fabric-engine/FabricUI/blob/pablo/PySideBuild.sh
-
On 29/10/2015 at 11:29, xxxxxxxx wrote:
Ok.
I just wanted to make sure Maxon didn't actually do anything new to make Qt stuff integrate with C4D.
I've asked for this many times over the years. And the replies from the Maxon devs has always been negative about Qt. So it surprised me to see you saying "new stuff" for handling Qt.I've had to figure out how to integrate Qt with C4D on my own. The same way I had to figure out how to use Win32 code and Win32 dialogs with C4D.
PySide is dead simple to use in C4D due to python itself (nothing Maxon did). Even in R13.
But C++ is a bit harder because you need to create a Custom Build Tool for moc'ing it to generate the signals & slots code in VS.I had considered doing Qt<-->C4D YouTube tutorials for both PySide & C++.
But since I'm using R13. I have to use VS2010 with it.
And I figured those programs were too outdated to use for tutorials.-ScottA
-
On 29/10/2015 at 11:44, xxxxxxxx wrote:
Originally posted by xxxxxxxx
Ok.
I just wanted to make sure Maxon didn't actually do anything new to make Qt stuff integrate with C4D.
I've asked for this many times over the years. And the replies from the Maxon devs has always been negative about Qt. So it surprised me to see you saying "new stuff" for handling Qt.argh, sorry, that bring false info what maxon done. i only point that moving to vfx platform concept(2015 - http://www.vfxplatform.com ) - change to pyhon 2.7 > make a few pluses for maxon
yes, this also stopped me to learn pyside or pyQT
Originally posted by xxxxxxxx
But C++ is a bit harder because you need to create a Custom Build Tool for moc'ing it to generate the signals & slots code in VS.
oh yes, i made qtport of Fabric Engine(it's canvas is qt app gui) to one cad tool. Sdk of this cad is tiny(early bird), so it was easy
-
On 29/10/2015 at 11:46, xxxxxxxx wrote:
Originally posted by xxxxxxxx
Scott, have you try to build widgets, for windows os? Example(macos or linux) https://github.com/fabric-engine/FabricUI/blob/pablo/PySideBuild.sh
Yes. Although I just remembered that I used PyQt. Not PySide.
Here's one of the examples I wrote.
This code creates floating windowless Qt widgets that can interact with things in C4D.#This code creates various gizmos without a visible dialog window (a SplashScreen) #Then closes it after 5 seconds import c4d,sys,time from PyQt4 import QtGui, QtCore, uic from os import path QtCore.QCoreApplication.addLibraryPath(path.join(path.dirname(QtCore.__file__), "plugins")) def handleButton() : print "Button Clicked" def handleSlider(value) : for i in xrange(0,101) : if value == i: print i def handleCHKBOX(state) : if state == QtCore.Qt.Checked: print "on" else: print "off" def main() : app = QtGui.QApplication(sys.argv) curTime = QtCore.QTime.currentTime() print curTime #Creates a gizmo with no dialog and forces it to be the topmost window #Also puts an icon on the button button = QtGui.QPushButton('Test') button.move(700, 400) #Screen X,Y position icon = QtGui.QIcon("C:/Users/user/Desktop/myimage.jpg") button.setIconSize(QtCore.QSize(64,64)) button.setIcon(icon) button.setWindowFlags(QtCore.Qt.SplashScreen | QtCore.Qt.WindowStaysOnTopHint) button.show() button.clicked.connect(handleButton) #Creates a gizmo with no dialog and forces it to be the topmost window labelText = "Hello" myLabel = QtGui.QLabel("<font color=red size=72>" + labelText + "</font>") myLabel.move(700, 350) #Screen X,Y position myLabel.setWindowFlags(QtCore.Qt.SplashScreen | QtCore.Qt.WindowStaysOnTopHint) myLabel.show() #Creates a label gizmo that is used to display an image image = QtGui.QPixmap( "C:/Users/user/Desktop/myimage.jpg" ) myLabel = QtGui.QLabel() myLabel.setPixmap(image) myLabel.move(700, 350) #Screen X,Y position myLabel.setWindowFlags(QtCore.Qt.SplashScreen | QtCore.Qt.WindowStaysOnTopHint) myLabel.show() #Creates a slider gizmo sld = QtGui.QSlider(QtCore.Qt.Horizontal) sld.setFocusPolicy(QtCore.Qt.NoFocus) sld.setMinimum(0) sld.setMaximum(101) sld.setWindowFlags(QtCore.Qt.SplashScreen | QtCore.Qt.WindowStaysOnTopHint) sld.setGeometry( 700, 300, 100, 20) #Screen X,Y position, width&height sld.valueChanged[int].connect(handleSlider) sld.show() #Creates a checkbox gizmo cb = QtGui.QCheckBox('My checkbox') cb.setWindowFlags(QtCore.Qt.SplashScreen | QtCore.Qt.WindowStaysOnTopHint) cb.toggle() cb.stateChanged.connect(handleCHKBOX) cb.setGeometry(700, 250, 85, 15) #Screen X,Y position, width&height cb.show() #Close the gizmos after 5 seconds QtCore.QTimer.singleShot(5000, app.quit) app.exec_() if __name__=='__main__': main()
To be honest I toyed around for this for like one day. Said to myself...heck this is simple...Made some examples and some notes...And then never used it again.
I don't use Python very much other than for quickly testing things in C4D. And I never install custom python modules like this.
I stay mostly in C++.-ScottA
-
On 29/10/2015 at 12:00, xxxxxxxx wrote:
Originally posted by xxxxxxxx
To be honest I toyed around for this for like one day. Said to myself...heck this is simple...Made some examples and some notes...And then never used it again.
I don't use Python very much other than for quickly testing things in C4D. And I never install custom python modules like this.
I stay mostly in C++.-ScottA
Interesting sample, for example i spent a week or more to understand how assembly their widget python-module-of-fabricui still no luck - i feel that it not finished. I use "hybrid" - c/c++ extensions and scripting
your example, i moved from such declaration of QtGui.QApplication, make like in maya or hou
import c4d import sys from PySide import QtCore, QtGui, shiboken from PySide.QtCore import * from PySide.QtGui import * class Window(QtGui.QMainWindow) : def __init__(self) : super(Window,self).__init__() self.initUI() def initUI(self) : self.setGeometry(200,500,400,400) self.setWindowTitle("Test") centralWidget = QtGui.QWidget() self.setCentralWidget(centralWidget) def main() : app = QtGui.QApplication.instance() # checks if QApplication already exists if not app: # create QApplication if it doesnt exist app = QtGui.QApplication([]) print "qt app" app.aboutToQuit.connect(app.deleteLater) print "qt app ins" win = Window() win.setWindowFlags(QtCore.Qt.WindowStaysOnTopHint) win.setProperty("saveWindowPref", True ) if win.isVisible() == False: win.show() app.exec_() while (win.isVisible()) : app.processEvents() if win.isVisible() == False: print "exit" win.close() if __name__ == "__main__": main()
-
On 29/10/2015 at 12:07, xxxxxxxx wrote:
I'm sorry that made such topic and content. Maybe python, qt and etc. will be one of topics at future developer kitchens