mirror of
https://gitgud.io/ll.mirrors/sizedapparel.git
synced 2024-08-15 00:43:40 +00:00
128 lines
No EOL
4.2 KiB
Python
128 lines
No EOL
4.2 KiB
Python
import sys
|
|
import math
|
|
from PyQt5.QtCore import QPoint
|
|
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QToolTip , QMainWindow, QAction, qApp , QHBoxLayout, QVBoxLayout, QFrame
|
|
from PyQt5.QtWidgets import QRadioButton, QCheckBox, QGroupBox, QGridLayout, QMenu, QTabWidget, QDesktopWidget, QLabel, QStatusBar
|
|
from PyQt5.QtGui import QPixmap
|
|
from PyQt5.QtGui import QFont
|
|
from PyQt5.QtGui import QIcon
|
|
from PyQt5.QtCore import QCoreApplication
|
|
|
|
|
|
|
|
class MyApp(QWidget):
|
|
graphic_image = QPixmap
|
|
lbl_img = QLabel
|
|
|
|
def __init__(self):
|
|
super().__init__()
|
|
self.setWindowTitle('ImagePointFinder')
|
|
self.statusbar = QStatusBar()
|
|
self.statusbar.showMessage("Click Image to Get Position")
|
|
self.initUI()
|
|
self.setAcceptDrops(True)
|
|
self.posX = 0.0
|
|
self.posY = 0.0
|
|
self.Rot = 0.0
|
|
self.Len = 0
|
|
|
|
#self.setStatusBar(self.statusbar)
|
|
|
|
def dragEnterEvent(self, event):
|
|
if event.mimeData().hasUrls():
|
|
event.accept()
|
|
else:
|
|
event.ignore()
|
|
|
|
def dropEvent(self, event):
|
|
files = [u.toLocalFile() for u in event.mimeData().urls()]
|
|
for f in files:
|
|
print(f)
|
|
self.graphic_image = QPixmap(files[0])
|
|
|
|
self.lbl_img.setPixmap(self.graphic_image.scaled(512,512))
|
|
#self.lbl_img.frame = QFrame(self.lbl_img.frame)
|
|
self.lbl_img.setFrameShape(QFrame.Box)
|
|
|
|
def mousePressEvent(self, event):
|
|
#event.x()
|
|
|
|
#print()
|
|
self.posX = event.globalX() - self.lbl_img.mapToGlobal(QPoint(0,0)).x()
|
|
self.posY = event.globalY() - self.lbl_img.mapToGlobal(QPoint(0,0)).y()
|
|
self.Rot = 0.0
|
|
self.Len = 0.0
|
|
U = 0
|
|
V = 0
|
|
if(self.lbl_img.pixmap()):
|
|
U = (self.posX / self.lbl_img.pixmap().height())-0.5
|
|
V = (self.posY / self.lbl_img.pixmap().width())*-1 + 0.5
|
|
txt = "Clicked Position ; Position(x,y) =({0:.3f}, {1:.3f}) , Rotation = {2:.1f}, Length = {3:.3f} ".format(U, V, self.Rot, self.Len)
|
|
self.statusbar.showMessage(txt)
|
|
#print(event.globalX())
|
|
|
|
def mouseMoveEvent(self, event):
|
|
target_posX = event.globalX() - self.lbl_img.mapToGlobal(QPoint(0,0)).x()
|
|
target_posY = event.globalY() - self.lbl_img.mapToGlobal(QPoint(0,0)).y()
|
|
|
|
self.Rot = math.degrees( math.atan2(target_posY - self.posY, target_posX - self.posX)) + 90
|
|
if(self.Rot < 0):
|
|
self.Rot = self.Rot + 360
|
|
|
|
|
|
if(self.lbl_img.pixmap()):
|
|
U = (self.posX / self.lbl_img.pixmap().height())-0.5
|
|
V = (self.posY / self.lbl_img.pixmap().width())*-1 + 0.5
|
|
tU = target_posX / self.lbl_img.pixmap().height()
|
|
tV = target_posY / self.lbl_img.pixmap().width()
|
|
self.Len = math.fabs(math.dist((U,V),( tU, tV)))
|
|
txt = "Clicked Position ; Position(x,y) =({0:.3f}, {1:.3f}) , Rotation = {2:.1f}, Length = {3:.3f} ".format(U, V, self.Rot, self.Len)
|
|
self.statusbar.showMessage(txt)
|
|
|
|
def initUI(self):
|
|
tab1 = QWidget()
|
|
tab2 = QWidget()
|
|
|
|
tabs = QTabWidget()
|
|
tabs.addTab(tab1, 'Texture Pivot and Point Editor')
|
|
#tabs.addTab(tab2, 'Sized Texture List Editor')
|
|
|
|
vbox = QVBoxLayout()
|
|
vbox.addWidget(tabs)
|
|
|
|
self.graphic_image = QPixmap()
|
|
self.lbl_img = QLabel()
|
|
#self.lbl_img.setPixmap(self.graphic_image)
|
|
self.lbl_img.setText("Drag and Drop Image Here")
|
|
|
|
vbox2 = QVBoxLayout()
|
|
vbox2.addWidget(self.lbl_img)
|
|
vbox2.addWidget(self.statusbar)
|
|
tab1.setLayout(vbox2)
|
|
|
|
|
|
self.setLayout(vbox)
|
|
|
|
#print(self.hasMouseTracking())
|
|
self.setMouseTracking(True)
|
|
|
|
#print(self.hasMouseTracking())
|
|
|
|
|
|
self.setGeometry(500, 500, 500, 400)
|
|
self.center()
|
|
|
|
self.show()
|
|
#self.statusbar.show()
|
|
|
|
def center(self):
|
|
qr = self.frameGeometry()
|
|
cp = QDesktopWidget().availableGeometry().center()
|
|
qr.moveCenter(cp)
|
|
self.move(qr.topLeft())
|
|
|
|
|
|
if __name__ == '__main__':
|
|
app = QApplication(sys.argv)
|
|
ex = MyApp()
|
|
sys.exit(app.exec_()) |