Разбираюсь в основах создания форм на питон. Решил сделать программу по вырезке выделенной фотографии(все файлы пронумерованы от 0 до N).
Всего два окна, в одном показывается список фотографий и сами фотографии. А во втором только фотография и отслеживается нажатие/отжатие мыши( в дочернем окне), записываются их координаты соответственно и должно получаться имя файла в списке для дочернего окна, для последующей обрезки.
Но при попытке получить имя файла из списка выдаётся ошибка 'Cutt' object has no attribute 'spisok' .
Основное окно:
class Cutt(QMainWindow):
def __init__(self):
super(Cutt, self).__init__()
self.ui = Ui_Cutt()
self.ui.setupUi(self)
self.ui.btnstart.clicked.connect(lambda: self.createwindow())
self.ui.btnstart.clicked.connect(lambda: self.showpic1())
def folderto(self) -> None:
self.ui.spisok.clear()
global pathto
pathto = PySide6.QtWidgets.QFileDialog.getExistingDirectory(self, "Выберите папку")
if pathto:
for file_name in os.listdir(pathto):
self.ui.spisok.addItem(file_name)
def showpic1(self) -> None:
global image
if self.ui.spisok.currentItem() is None:
image = QImage(f"{pathto}\\0.jpg")
self.okno2.picture.setPixmap(QPixmap.fromImage(image))
else:
image = QImage(f"{pathto}\\{self.ui.spisok.currentItem().text()}")
self.okno2.picture.setPixmap(QPixmap.fromImage(image))
def createwindow(self) -> None:
self.okno2 = TwoWindow()
self.okno2.show()
Дочернее окно
class TwoWindow(PySide6.QtWidgets.QMainWindow, design2.Ui_MainWindow):
def __init__(self):
super().__init__()
self.setupUi(self)
self.ui = Cutt()
def mousePressEvent(self, event):
global y1
global x1
x1 = event.x()
y1 = event.y()
print(x1, y1)
def mouseReleaseEvent(self, event):
global y2
global x2
x2 = event.x()
y2 = event.y()
print(x2, y2)
self.cuttimage()
def cuttimage(self) -> None:
global m
m += 1
if self.ui.spisok.currentItem() is None:
im = Image.open(f"{pathto}\\0.jpg")
else:
im = Image.open(f"{pathto}\\{self.ui.spisok.currentItem().text()}")
xn = (x1 - 20)/kx
xk = (x2 - 20)/kx
yn = (y1 - 20)/ky
yk = (y2 - 20)/ky
im_crop = im.crop((xn, xk, yn, yk))
im_crop.save(f'{m}.jpg', quality=95)