2011-07-14 7 views
2

GUIのpyqtを使用してPythonにWin32アプリケーションを移植しようとしていますが、テキストラベルと単純なウィンドウを取得できず、次のような単純なWin32スタイル(基本的にWS_EX_CLIENTEDGE):pyqt Win32スタイルに似たウィンドウ

Example

私は(すなわち、異なるスタイルを使用して沈没 - 良い測定のために、他のすべての賢明な組み合わせをして)setFrameStyleと共演2つのウィジェットのと(setContentsMarginsを使用)をゼロにしますすべてのスペースを埋めるようにしますが、Qtウィンドウはまだ境界に関してかなり異なって見えます。

+1

あなたはすでにこれを見ている可能性がありますが、Pythonの 'win32gui'モジュールを見てきました - これは、[PythonのWin32の拡張]の一部である(http://python.net /crew/mhammond/win32/Downloads.html)?これにより、あなたのアプリをあなたが望むものにもっと近づけることができます。 PyQtはカスタムコントロールなので、あなたが望むものに近づけることが期待できますが、あなたが望むものと決して一致することはありません。 – Raceyman

+0

あなたの提案をお寄せいただきありがとうございます、私はいくつかの異なるGUIフレームワークを見ましたが、私はPython3を使用しており、範囲をかなり限定しており、pyqtが最善の策だと思われます。それほど多くはないので、今はやらなくてはなりません。 – Voo

答えて

1

import sys 
from PySide import QtGui, QtCore 

class Example(QtGui.QWidget): 

    def __init__(self): 
     super(Example, self).__init__() 

     self.initUI() 

    def initUI(self): 
     label = QtGui.QLabel("Test") 
     label.setAlignment(QtCore.Qt.AlignCenter) 
     label.setFrameStyle(QtGui.QFrame.WinPanel | QtGui.QFrame.Sunken) 

     edit = QtGui.QTextEdit() 
     edit.setFrameStyle(QtGui.QFrame.WinPanel | QtGui.QFrame.Sunken) 
     edit.setText("Some text") 
     edit.moveCursor(QtGui.QTextCursor.MoveOperation.End) 

     vbox = QtGui.QVBoxLayout() 
     vbox.setContentsMargins(1, 1, 1, 1) 
     vbox.setSpacing(1) 
     vbox.addWidget(label) 
     vbox.addWidget(edit) 

     self.setLayout(vbox) 

     self.setGeometry(300, 300, 300, 150) 
     self.setWindowTitle('Window Title') 
     self.show() 

def main(): 

    app = QtGui.QApplication(sys.argv) 
    ex = Example() 
    sys.exit(app.exec_()) 


if __name__ == '__main__': 
    main() 

QFrameドキュメントは異なるフレームスタイルの優れた概観を持っています。

setFrameStyleよりも近づくには、独自のウィジェット/パネルをペイントするか、QT以外を使用する必要があります。

wxPython

pywin32

0

おそらく、正しいスタイルを使用していない可能性があります。 the documentation for QStyleをご覧ください。私は(QtGui.QFrame.WinPanelを使用して)以下と非常に近い取得

関連する問題