他一直困扰着我,主要是因为移动小部件和诸如此类的方法组合有多少。本质上,我有一个简单的小部件,我希望能够在我的应用程序的特定区域弹出。问题是我似乎永远无法让它在我想要的地方弹出。此外,我想以一种方式设置它,我可以根据它是否弹出以指向应用程序左上角的小部件而不是底部的小部件来调整它的“指针”侧 -正确的。
理想情况下,我可以将弹出窗口放置在几乎靠近父小部件边缘的位置,并根据它的位置锚定它。这是我一直在尝试的。
from PyQt4.QtCore import *
from PyQt4.QtGui import *
import sys
class popup(QWidget):
def __init__(self, parent = None, widget=None):
QWidget.__init__(self, parent)
layout = QGridLayout(self)
button = QPushButton("Very Interesting Text Popup. Here's an arrow ^")
layout.addWidget(button)
self.move(widget.rect().bottomLeft())
class Window(QWidget):
def __init__(self):
QWidget.__init__(self)
self.button = QPushButton('Hit this button to show a popup', self)
self.button.clicked.connect(self.handleOpenDialog)
self.button.move(250, 50)
self.resize(600, 200)
def handleOpenDialog(self):
self.popup = popup(self, self.button)
self.popup.show()
if __name__ == '__main__':
app = QApplication(sys.argv)
win = Window()
win.show()
sys.exit(app.exec_())
此代码生成一个随机位于小部件中间的按钮。在这个例子中,我想要得到的是在右上角显示其“枢轴”的按钮下方的弹出窗口,这样弹出按钮中的箭头将指向小部件的右下角。然而,它却在窗口的左上角弹出。在我玩弄 .move、.setGeometry 和玩 QRect 的过程中,我终其一生都无法弄清楚这一点。对能伸出援手的人表示极大的敬意。谢谢!