QtDesignerファイルからPythonコードを生成するにはどうすればよいですか? pyside-uicが見つかりましたが、構文の例が見つかりません。 私はspyderでwin7とpythonxyを実行します。pyside-uicを使用したPythonコードの生成
答えて
ドキュメントをお読みください。この特定のケースでは、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.
QUiLoaderクラスには、中間ファイルを作成せずに仕事を行います。そのようなmanページを指定するよう
http://www.pyside.org/docs/pyside/PySide/QtUiTools/QUiLoader.html
pyside-UICは、多かれ少なかれ、同じpyuic4にある:
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-uic.exe useful_filename.ui> useful_filename_ui.py' 次に、この単純な命名規則を使って追跡することができます。 将来私はこれ以上使用しないで、代わりにQUILoaderクラスを使用します(下記の@Svenを参照してください)。 – Neon22
私はpyside-uicとvsを使用してUIコードを作成したいと思っています。 XMLコードでは、実際にどのようにレイアウトされているのか分かりません。だからあなたは動的にQtを自分でコード化する方法に苦労しています。 ** 2nd **:pyにコンパイルすると、pycはあなたのスクリプトを起動するたびにあなたを変更するまで、一度起こります! ** 3rd **:コードから複雑さを払わないでください。それは 'import'とこのローダーの全てのものです!私はそれが本当にもう時間の問題ではないことを知っていますが、私はいつもxmlを "読み込む"ときにたくさんの無駄を感じています。 – ewerybody
pyside-uic.exe MyWindow.ui -o MyWindow.py
は私がやっていることで、それはうまくいきます(私が知る限り)
がうまく動作しますが、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_()
を私は.uiファイル(モジュールを右クリックし、作成するために、EclipseとQTDesignerを使用し、 "新規作成 - その他> .."、「Qtのデザイナーを選択してください - > Qtデザイナーフォーム)。明示的な呼び出しは必要ありません。
+1良い、完全な例を提供します。しかし、この1つのことで、私は立ち往生しましたが、QFileはこのコードが存在するディレクトリではなく、ファイルパスのパッケージトップディレクトリに向かいました。未来に立ち往生している人のために。 – IsaacS
問題は、loader.loadがオブジェクトを返すことです。しかし、私たちはクラスを取得し、必要に応じてクラスをサブクラス化できます。しかし、loader.loadでは、常にインスタンス化されたオブジェクトを返すので、サブクラス化やカスタマイズは必要ありません。それでも、カスタムウィジェットを読み込むことはできません:このバグを参照してください:https://bugreports.qt-project.org/browse/PYSIDE-77 – Sarim
PytideチームがQtUiToolsを使用している(別の回答で示唆されているように)のは、現在のところ推奨されていません。
ここに全文を読む:https://groups.google.com/forum/?fromgroups=#!topic/pyside/_s1HPe6XTZs
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得ることができます...しかし、あなたはしたくない場合は変換する、そうでない場合は、次の正しい方法です。 Cで
pyside-uic.exe MyWindow.ui -o MyWindow.py
どこから得たのですか?これはPySideパッケージに含まれていないためです。 – Romulus
ルック:\ Python27 \ Libの\サイト - パッケージ\ PySideのスクリプトはuic.pyを\(またはあなたが持っているどこにPythonがインストールされている)\。このスクリプトを見ると、マニュアルページ(ウィンドウ上で正しく表示する方法がわからない)のようにラベル付けされたオプションが表示されます。http://manpages.ubuntu.com/manpages/precise/man1/pyside-uic.1.html
私はしばらく混乱していますC:\ Python27 \ Lib \ site-packages \ pysideuic \ pyside-uic.1を見て、呼び出されているファイルでなければならないと考えました。すべての余分な文字のためにマニュアルページとしてそれを見ることは不可能です。どんな文字が余分か、どの文字がそうでないかを推測しようとすると、構文を覚えることはできません!
ウィンドウでは、上記の行(参考のために)にuic_generator.batのような.bat拡張子を持つテキストファイルを保存することで、バッチファイルでこれを自動化できます。
pyside-UIC MyWindow.ui -o MyWindow.py
[windows man page reader](https://stackoverflow.com/a/944571/984421) – ekhumoro
- 1. Antを使用したコード生成
- 2. プリプロセッサマクロを使用したコード生成
- 3. PySide、PysideUIC、Multiple Inheritance
- 4. オープンソースツールを使用したArgoUML UMLモデルからのPythonコードの生成?
- 5. XPAND(ネストされたパッケージ)を使用したJavaコードの生成
- 6. LARGER DATASET用のAVERAGEIFを使用したPythonカラムの生成
- 7. RhinoのPythonコードの生成
- 8. Excel VBAを使用したコード128のバーコードの生成
- 9. ZXing( "Zebra Crossing")APIを使用したJavaでのQRコード生成
- 10. Eclipseを使用したコンポジションのコード生成
- 11. Gulpタスクを使用したAutoRestコードの生成
- 12. TextTransform.exeを使用したsitecoreでのTDSコード生成
- 13. コード次の表は、highchartsを使用して生成された
- 14. Excelと同等のAVERAGEIFを使用したPython列の生成
- 15. VC++を使用して生成されたC++コードをコンパイル
- 16. Pythonを使用したSSOのSPNEGO(ケルベロストークン生成/検証)
- 17. PythonコードからPythonファイルを生成
- 18. .Net標準を使用したコード生成
- 19. LLVM APIを使用した静的コード生成
- 20. Specflowケーキを使用して自動生成されたc#コード
- 21. t4テンプレートを使用した動的コード生成
- 22. Pythonコードから生成されたLLVM IRコードを実行
- 23. ZSIを使用してWSDLからPythonコードを生成する方法は?
- 24. Chatbot:SlackにPythonフレームワークを使用した生成モデル
- 25. Perlinノイズを使用したPythonランダムマップ生成
- 26. OpenSSL生成鍵を使用したPython RSA解読
- 27. Tkinterを使用したPythonコード
- 28. テストデータを生成するためにコード生成を使用する
- 29. cxf mavenでJAXBコードを生成、howtoターゲットディレクトリに生成されたファイルを使用
- 30. juliaを使ったコード生成
おかげで、PySideはPyQtは – ArtDijk
D'オハイオ州のように動作しているようです!完全にPySideビットを見逃してしまった。幸運にも、PyQt4は多くのことを正しく行い、PySideはそれほど変更する必要はありませんでした:) – delnan