QtDesignerファイルからpythonコードを生成するにはどうすればよいですか?pyside-uicは見つかりましたが、構文の例が見つかりません。win7とpythonxyをスパイダーで実行します。
pyside-uicはpyuic4とほぼ同じです。そのため、manページには次のように指定されています。
Usage:
pyside-uic [options] <ui-file>
Options:
--version
show program's version number and exit
-h,--help
show this help message and exit
-oFILE,--output=FILE
write generated code to FILE instead of stdout
-x,--execute
generate extra code to test and display the class
-d,--debug
show debug output
-iN,--ident=N
set indent width to N spaces, tab if N is 0 (default: 4)
私は通常、次のように使用します。
pyside-uic -o output.py input.ui
ちょうどPysideのQUILoaderを試してみましたが、うまくいきます:
from PySide import QtGui
from PySide import QtCore
from PySide import QtUiTools
class MyWidget(QtGui.QMainWindow):
def __init__(self, *args):
apply(QtGui.QMainWindow.__init__, (self,) + args)
loader = QtUiTools.QUiLoader()
file = QtCore.QFile("pyside_ui_qtdesigner_form_test.ui")
file.open(QtCore.QFile.ReadOnly)
self.myWidget = loader.load(file, self)
file.close()
self.setCentralWidget(self.myWidget)
if __name__ == '__main__':
import sys
import os
print("Running in " + os.getcwd() + " .\n")
app = QtGui.QApplication(sys.argv)
win = MyWidget()
win.show()
app.connect(app, QtCore.SIGNAL("lastWindowClosed()"),
app, QtCore.SLOT("quit()"))
app.exec_()
私はEclipseとQTDesignerを使用して.uiファイルを作成しました(モジュールを右クリックして[新規]-> [その他]を選択し、[Qtデザイナー]-> [Qtデザイナーフォーム]を選択します)。明示的なuic呼び出しは必要ありません。
import pysideuic
import xml.etree.ElementTree as xml
from cStringIO import StringIO
def loadUiType(uiFile):
"""
Pyside "loadUiType" command like PyQt4 has one, so we have to convert the
ui file to py code in-memory first and then execute it in a special frame
to retrieve the form_class.
"""
parsed = xml.parse(uiFile)
widget_class = parsed.find('widget').get('class')
form_class = parsed.find('class').text
with open(uiFile, 'r') as f:
o = StringIO()
frame = {}
pysideuic.compileUi(f, o, indent=0)
pyc = compile(o.getvalue(), '<string>', 'exec')
exec pyc in frame
# Fetch the base_class and form class based on their type
# in the xml from designer
form_class = frame['Ui_%s'%form_class]
base_class = eval('QtGui.%s'%widget_class)
return form_class, base_class
この方法を使用してUIをロードし、form_classと基本クラスを戻り値の型として取得することもできますが、変換したくない場合は、はい、以下は正しい方法です。
pyside-uic.exe MyWindow.ui -o MyWindow.py
pyside-uic.exe MyWindow.ui -o MyWindow.py
私がやっていることであり、それはうまく機能しています(私の知る限り)
QUiLoaderクラスは、中間ファイルを作成せずにジョブを実行します。
http://www.pyside.org/docs/pyside/PySide/QtUiTools/QUiLoader.html
ドキュメントをお読みください。この特定のケースでは、 http://www.riverbankcomputing.co.uk/static/Docs/PyQt4/pyqt4ref.html#pyuic4 :
The pyuic4 utility is a command line interface to the uic module. The command has the following syntax:
pyuic4 [options] .ui-file
The full set of command line options is:
-h, --help A help message is written to stdout.
--version The version number is written to stdout.
-i N, --indent=N
The Python code is generated using an indentation of N spaces. If N is 0 then a tab is used. The default is 4.
-o FILE, --output=FILE
The Python code generated is written to the file FILE.
-p, --preview The GUI is created dynamically and displayed. No Python code is generated.
-w, --pyqt3-wrapper
The generated Python code includes a small wrapper that allows the GUI to be used in the same way as it is used in PyQt v3.
-x, --execute The generated Python code includes a small amount of additional code that creates and displays the GUI when it is executes as a standalone application.
--from-imports Resource modules are imported using from . import rather than a simple import.
QtUiToolsの使用(別の回答で提案)は、現在PySideチームによって推奨されていません。
ここで全文を読む: https://groups.google.com/forum/?fromgroups=#!topic/pyside/_s1HPe6XTZs
C:\ Python27\Lib\site-packages\PySide\scripts\uic.py(またはpythonがインストールされている場所)を確認してください。そのスクリプトを確認すると、ラベルが付いたオプションが表示されますまた、manページ(Windowsで適切に表示する方法がわかりません。ヒントを教えてください)に記載されています。ここ http://manpages.ubuntu.com/manpages/precise/man1/pyside-uic。 1.html
C:\ Python27\Lib\site-packages\pysideuic\pyside-uic.1を呼び出そうとしているときにしばらく混乱しました。余分な文字がすべてあるため、それをマニュアルページとして表示することは不可能です。余分な文字とそうでない文字を推測して構文を学ぶことはできません。
Windowsでは、もちろん、バッチファイルを使用してこれを自動化できます。uic_generator.batのような.bat拡張子を持つ上記の行(参照用)を含むテキストファイルを保存します。
pyside-uic MyWindow.ui -o MyWindow.py