Python pyside6 pyqt
Напишите программу с интерфейсом, которая будет по нажатию кнопки создавать много файлов внутри папки «temp».
Количество файлов нужно выбирать через spinbox на интерфейсе.
Моя попытка:
import sys
from PySide6.QtWidgets import QApplication, QWidget, QPushButton, QSpinBox
from PySide6.QtGui import QCloseEvent
spinbox_widget = None
class ExampleWindow(QWidget):
def __init__(self, window_name: str):
super().__init__()
self.window_name = window_name
btn = QPushButton('Click', self)
btn.clicked.connect(self.create_many_files)
btn.move(90, 100)
btn.setGeometry(150, 150, 150, 150)
sbx = QSpinBox(self)
sbx.move(90, 100)
sbx.setGeometry(350, 150, 100, 100)
global spinbox_widget
spinbox_widget = sbx
self.setGeometry(250, 250, 550, 550)
self.setWindowTitle('Window Example')
self.show()
def create_many_files(self):
global spinbox_widget
a = int(spinbox_widget.get())
while a > 0:
with open(f"temp/file{a}", "w") as file:
file.write(f"Hello, file{a}")
a -= 1
def run():
app = QApplication(sys.argv)
ex = ExampleWindow("Приложение pyside")
sys.exit(app.exec())
но у меня выходит такая ошибка
"a = int(spinbox_widget.get()) AttributeError: 'PySide6.QtWidgets.QSpinBox' object has no attribute 'get'",
я понимаю в чем ошибка, но не знаю как ее решить, не могли бы вы мне подсказать что можно написать вместо get
Ответы (1 шт):
Автор решения: S. Nick
→ Ссылка
value : int
Это свойство содержит значение счетчика
import sys
'''
from PySide6.QtWidgets import QApplication, QWidget, QPushButton, QSpinBox
from PySide6.QtGui import QCloseEvent
'''
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.Qt import *
# ??? spinbox_widget = None
class ExampleWindow(QWidget):
def __init__(self):
super().__init__()
btn = QPushButton('Click', self)
btn.clicked.connect(self.create_many_files)
# ??? btn.move(90, 100)
btn.setGeometry(150, 150, 150, 150)
# ----> vvvv <---------------------------------------------------------------------
self.sbx = QSpinBox(self)
# ??? self.sbx.move(90, 100)
self.sbx.setGeometry(350, 150, 100, 100)
# ??? global spinbox_widget
# ??? spinbox_widget = self.sbx
def create_many_files(self):
# ??? global spinbox_widget
# a = int(spinbox_widget.get())
a = self.sbx.value()
while a > 0:
with open(f"temp/file{a}", "w") as file:
file.write(f"Hello, file{a}")
a -= 1
if __name__ == "__main__":
app = QApplication(sys.argv)
ex = ExampleWindow()
ex.setWindowTitle('Приложение pyside')
ex.resize(550, 550)
ex.show()
sys.exit(app.exec())
