Форум сайта python.su
Всех приветствую. Вроде легкая задачка, однако, пока не смог решить.
Имеется виджет на котором расположен компонент - кнопка. Нужно получить координаты верхней левой точки кнопки относительно QWidget. Как я понял это осуществляется методом pos().
Вот код, и тут все работает:
class Window(QWidget): def __init__(self): super().__init__() self.window1() def window1 (self): self.setWindowTitle('Record') self.resize(339, 226) #Создаем кнопку btn = QPushButton('Нажать', self) #Размещаем кнопку на виджете btn.move(200,200) #Получаем QPoint(200,200) print(btn.pos()) if __name__ == '__main__': import sys app = QApplication(sys.argv) window = Window() window.show() sys.exit(app.exec_())
class Window(QWidget): def __init__(self): super().__init__() self.window1() def window1 (self): self.setWindowTitle('Record') self.resize(339, 226) #Создаем кнопку btn = QPushButton('Нажать', self) #Вкладываем ее в контейнер hbox = QHBoxLayout(self) hbox.addWidget(btn) self.setLayout(hbox) #Получаем QPoint(0,0) print(btn.pos()) if __name__ == '__main__': import sys app = QApplication(sys.argv) window = Window() window.show() sys.exit(app.exec_())
#Получаем QPoint(0,0) print(btn.mapToParent(btn.pos()))
Офлайн
высчитать?
Офлайн
#coding:utf8 from PySide.QtGui import * class Window(QWidget): def __init__(self): QWidget.__init__(self) self.window1() def window1 (self): self.setWindowTitle('Record') self.resize(339, 226) #Создаем кнопку self.btn = QPushButton(u'Нажать', self) #Вкладываем ее в контейнер hbox = QGridLayout(self) hbox.setContentsMargins(0,0,0,0) hbox.addWidget(self.btn) self.setLayout(hbox) print 'init',self.btn.pos() self.btn.clicked.connect(self.btn_click) def btn_click(self): print 'click',self.btn.pos() if __name__ == '__main__': import sys app = QApplication(sys.argv) w = Window() w.move(0,0) print 'move',w.btn.pos() w.show() print 'show',w.btn.pos() sys.exit(app.exec_())
Отредактировано vic57 (Май 14, 2016 10:49:45)
Офлайн
vic57Отличный пример, который демонстрирует работу. Благодарю
Офлайн