PyQt4 - 如何缩小 Mac OSX 上的布局?
PyQt4 - How to shrink the layout on Mac OSX?
对于相同的 PyQt4 代码,布局在 Linux 和 Windows 上看起来非常相似。但是对于 MacOSX,我们看到:
- 这些元素似乎多了一点 space(主要是 bt_bookmark,它没有缩小到预期的大小)
- 元素之间用了很多space(这是最讨厌的事情)
怎么能缩小到最小?是否有我们需要在全局或其他方面设置的保证金政策?
这是用于测试用例的代码:
from PyQt4 import QtGui, QtCore
import sys
class GUI(QtGui.QWidget):
def __init__(self):
super(GUI, self).__init__()
vbox_layout = QtGui.QVBoxLayout()
for i in range(4):
hbox_layout = QtGui.QHBoxLayout()
bt_bookmark = QtGui.QPushButton()
bt_bookmark.setGeometry(0, 0, 15, 15)
bt_bookmark.setIcon(QtGui.QIcon("./bookmark_on.png"))
hbox_layout.addWidget(bt_bookmark)
hbox_layout.addWidget(QtGui.QPushButton("Button1"))
hbox_layout.addWidget(QtGui.QLabel("Some text here."))
hbox_layout.addWidget(QtGui.QPushButton("Button2"))
hbox_layout.addWidget(QtGui.QPushButton("Button3"))
vbox_layout.addLayout(hbox_layout)
self.setLayout(vbox_layout)
self.setWindowTitle("Test Layout")
self.show()
self.resize_window_to_minimum()
def resize_window_to_minimum(self):
#
def _func_to_call():
self.resize(self.minimumSizeHint())
QtCore.QTimer.singleShot(500, _func_to_call)
if __name__ == "__main__":
app = QtGui.QApplication([])
gui = GUI()
sys.exit(app.exec_())
捕获:
要减少小部件之间的 space,您可以使用 QBoxLayout.setSpacing()
。
关于按钮的大小,您可以尝试通过设置样式表的边距或填充来调整。
我个人会将 bt_bookmark 的拉伸设置为 0 (hbox_layout.addWidget(bt_bookmark, stretch=0)
),将其他按钮的拉伸因子设置为 1。这样按钮 bt_bookmark 就不会window 调整大小时增长。
对于相同的 PyQt4 代码,布局在 Linux 和 Windows 上看起来非常相似。但是对于 MacOSX,我们看到:
- 这些元素似乎多了一点 space(主要是 bt_bookmark,它没有缩小到预期的大小)
- 元素之间用了很多space(这是最讨厌的事情)
怎么能缩小到最小?是否有我们需要在全局或其他方面设置的保证金政策?
这是用于测试用例的代码:
from PyQt4 import QtGui, QtCore
import sys
class GUI(QtGui.QWidget):
def __init__(self):
super(GUI, self).__init__()
vbox_layout = QtGui.QVBoxLayout()
for i in range(4):
hbox_layout = QtGui.QHBoxLayout()
bt_bookmark = QtGui.QPushButton()
bt_bookmark.setGeometry(0, 0, 15, 15)
bt_bookmark.setIcon(QtGui.QIcon("./bookmark_on.png"))
hbox_layout.addWidget(bt_bookmark)
hbox_layout.addWidget(QtGui.QPushButton("Button1"))
hbox_layout.addWidget(QtGui.QLabel("Some text here."))
hbox_layout.addWidget(QtGui.QPushButton("Button2"))
hbox_layout.addWidget(QtGui.QPushButton("Button3"))
vbox_layout.addLayout(hbox_layout)
self.setLayout(vbox_layout)
self.setWindowTitle("Test Layout")
self.show()
self.resize_window_to_minimum()
def resize_window_to_minimum(self):
#
def _func_to_call():
self.resize(self.minimumSizeHint())
QtCore.QTimer.singleShot(500, _func_to_call)
if __name__ == "__main__":
app = QtGui.QApplication([])
gui = GUI()
sys.exit(app.exec_())
捕获:
要减少小部件之间的 space,您可以使用 QBoxLayout.setSpacing()
。
关于按钮的大小,您可以尝试通过设置样式表的边距或填充来调整。
我个人会将 bt_bookmark 的拉伸设置为 0 (hbox_layout.addWidget(bt_bookmark, stretch=0)
),将其他按钮的拉伸因子设置为 1。这样按钮 bt_bookmark 就不会window 调整大小时增长。