QHboxLayout
ボタンとラベルを で水平に表示し、QGroupBox
いくつかをQRadioButton
で垂直に表示したい単純なウィンドウがありますQVBoxLayout
。この 2 つのピースを入れようとしましたQVBoxLayout
が、うまくいきませんでした。私のコードの結果
# -*- coding: utf-8 -*-
import sys
from PyQt4 import QtGui
from PyQt4 import QtCore
class Application(QtGui.QWidget):
""" Main application window """
def __init__(self):
super(Application, self).__init__()
self.initUI()
def initUI(self):
self.openBtn = QtGui.QPushButton("Open", self)
self.label = QtGui.QLabel("This is a test label", self)
self.hBox = QtGui.QHBoxLayout(self)
self.hBox.addWidget(self.openBtn)
self.hBox.addWidget(self.label)
self.group = QtGui.QGroupBox("Style", self)
self.radioBtn1 = QtGui.QRadioButton("Button 1", self.group)
self.radioBtn2 = QtGui.QRadioButton("Button 2", self.group)
self.radioLayout = QtGui.QVBoxLayout(self.group)
self.radioLayout.addWidget(self.radioBtn1)
self.radioLayout.addWidget(self.radioBtn2)
self.group.setLayout(self.radioLayout)
self.hBox2 = QtGui.QHBoxLayout(self)
self.hBox2.addWidget(self.group)
self.vBox = QtGui.QVBoxLayout(self)
self.vBox.addLayout(self.hBox2)
self.vBox.addLayout(self.hBox)
self.setLayout(self.vBox)
self.show()
def main():
app = QtGui.QApplication(sys.argv)
mainapp = Application()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
これは
QGroupBox
壊れる理由がわかりません。次のコードを使用すると、単独で正しく表示されます
# -*- coding: utf-8 -*-
import sys
from PyQt4 import QtGui
from PyQt4 import QtCore
class Application(QtGui.QWidget):
""" Main application window """
def __init__(self):
super(Application, self).__init__()
self.initUI()
def initUI(self):
# self.openBtn = QtGui.QPushButton("Open", self)
# self.label = QtGui.QLabel("This is a test label", self)
#
# self.hBox = QtGui.QHBoxLayout(self)
# self.hBox.addWidget(self.openBtn)
# self.hBox.addWidget(self.label)
self.group = QtGui.QGroupBox("Style", self)
self.radioBtn1 = QtGui.QRadioButton("Button 1", self.group)
self.radioBtn2 = QtGui.QRadioButton("Button 2", self.group)
self.radioLayout = QtGui.QVBoxLayout(self.group)
self.radioLayout.addWidget(self.radioBtn1)
self.radioLayout.addWidget(self.radioBtn2)
self.group.setLayout(self.radioLayout)
self.hBox2 = QtGui.QHBoxLayout(self)
self.hBox2.addWidget(self.group)
self.vBox = QtGui.QVBoxLayout(self)
self.vBox.addLayout(self.hBox2)
# self.vBox.addLayout(self.hBox)
self.setLayout(self.vBox)
self.show()
def main():
app = QtGui.QApplication(sys.argv)
mainapp = Application()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
利回り
Python 3.3 がインストールされた Windows 8 64 ビット マシンを実行しています。