프로그래밍 언어/Python

[PyQt] 클릭한 곳의 좌표 구하기 : mousePressEvent

sujo 2022. 9. 19. 15:47

[PyQt] 클릭한 곳의 좌표 구하기 : mousePressEvent

 

개요

  • 마우스가 클릭된 좌표를 알기 위해 mousePressEvent 메서드 사용
  • 화면을 클릭 시에 현재 좌표를 label에 표시한다.
  • 아래는 사용된 ui 파일이다.
더보기
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>MainWindow</class>
 <widget class="QMainWindow" name="MainWindow">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>800</width>
    <height>600</height>
   </rect>
  </property>
  <property name="windowTitle">
   <string>MainWindow</string>
  </property>
  <widget class="QWidget" name="centralwidget">
   <widget class="QLabel" name="label">
    <property name="geometry">
     <rect>
      <x>250</x>
      <y>230</y>
      <width>281</width>
      <height>21</height>
     </rect>
    </property>
    <property name="text">
     <string>TextLabel</string>
    </property>
    <property name="alignment">
     <set>Qt::AlignCenter</set>
    </property>
   </widget>
   <widget class="QLabel" name="title">
    <property name="geometry">
     <rect>
      <x>360</x>
      <y>180</y>
      <width>71</width>
      <height>21</height>
     </rect>
    </property>
    <property name="font">
     <font>
      <pointsize>12</pointsize>
      <weight>75</weight>
      <bold>true</bold>
     </font>
    </property>
    <property name="text">
     <string>Mouse</string>
    </property>
    <property name="alignment">
     <set>Qt::AlignCenter</set>
    </property>
   </widget>
  </widget>
 </widget>
 <resources/>
 <connections/>
</ui>
 
cs

 

 

코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
from PyQt5.QtWidgets import QApplication, QMainWindow
 
class window_class(QMainWindow):
    def __init__(self):
        from PyQt5.uic import loadUi
        super(window_class, self).__init__()
        loadUi('../../ui/mouse.ui'self)
 
    def mousePressEvent(self, e):
        mouse_pt = "x={0},y={1}, global={2},{3}".format(e.x(), e.y(), e.globalX(), e.globalY())
        self.label.setText(mouse_pt)
 
import sys
app = QApplication(sys.argv)
window = window_class()
window.show()
app.exec()
cs

 

 

결과 화면