【发布时间】:2017-01-05 11:53:59
【问题描述】:
大家好,
在我的可执行程序中有一个工具栏。好吧,用户决定移动工具栏。现在工具栏是浮动的。我知道我必须连接用户安排工具栏时发出的浮动信号。如何保存工具栏的新位置?我知道将工具栏添加到主窗口的方法,位置为:self.addToolBar( Qt.LeftToolBarArea , toolbar_name)。在handle_floating() 方法中,您会看到我想要的:我想获得当前的位置,但是如何获得?您还看到我刚刚添加了一个名为self.toolbar_pos 的成员变量来保存工具栏的位置。我的想法是,当应用程序终止时,我想将此值序列化到一个文件中,稍后,当再次运行应用程序时,它将读取该文件并相应地设置工具栏。但这没有问题。目前我不知道要获得工具栏的位置。
我需要你的帮助:)
#!/usr/bin/python
# -*- coding: utf-8 -*-
import sys
from PyQt4 import QtGui, QtCore
class Example(QtGui.QMainWindow):
def __init__(self, parent=None):
QtGui.QMainWindow.__init__(self, parent)
self.toolbar_pos = None
self.initUI()
def initUI(self):
exitAction = QtGui.QAction(QtGui.QIcon('exit24.png'), 'Exit', self)
exitAction.setShortcut('Ctrl+Q')
exitAction.triggered.connect(QtGui.qApp.quit)
self.toolbar = QtGui.QToolBar(self)
self.toolbar.setToolButtonStyle(QtCore.Qt.ToolButtonTextBesideIcon)
self.addToolBar(self.toolbar )
self.toolbar.addAction(exitAction)
self.toolbar.setAllowedAreas(QtCore.Qt.TopToolBarArea
| QtCore.Qt.BottomToolBarArea
| QtCore.Qt.LeftToolBarArea
| QtCore.Qt.RightToolBarArea)
self.addToolBar( QtCore.Qt.LeftToolBarArea , self.toolbar )
self.toolbar.topLevelChanged.connect(self.handle_floating)
def handle_floating(self, event):
# The topLevel parameter is true
# if the toolbar is now floating
if not event:
# If the toolbar no longer floats,
# then calculate the position where the
# toolbar is located currently.
self.toolbar_pos = None
print "Get position: ?"
def main():
app = QtGui.QApplication(sys.argv)
ex = Example()
ex.setGeometry(300, 300, 300, 200)
ex.setWindowTitle('Toolbar example')
ex.show()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
【问题讨论】:
标签: python-2.7 qt pyqt4