Хочу подключить всплывающее диалоговое окно для открытия с помощью кнопки из главного окна, сгенерированное с помощью UiDesigner
вся суть вопроса:
https://ru.stackoverflow.com/questions/1539413/pyqt6-pyside6-ошибка-пропущенного-аргумента
Python
PyQt6/PySide6 ошибка пропущенного аргумента
Проблема заключается в том, что в методе adding_balance вы создаете новый экземпляр QDialog и пытаетесь применить к нему UI через вызов self.ui.setupUi(self.window2). Однако, в этот момент self.ui уже переопределена в вашем основном классе Bank, что вызывает конфликт.
Вы можете решить проблему, изолируя UI для каждого окна в отдельные атрибуты. Например:
В целом, каждый экземпляр диалогового окна или главного окна должен иметь свой собственный Ui класс. Это улучшит структуру вашего кода и устранит подобные конфликты.
Вы можете решить проблему, изолируя UI для каждого окна в отдельные атрибуты. Например:
class Bank(QMainWindow):
def __init__(self, window2):
super(Bank, self).__init__()
self.main_ui = Ui_MainWindow() # Изменил здесь
self.main_ui.setupUi(self) # И здесь
self.window2 = window2
# Остальной код...
def adding_balance(self):
self.window2 = QDialog()
self.adding_ui = AddingDialog() # Изменил здесь
self.adding_ui.setupUi(self.window2) # И здесь
self.window2.show()
# Остальной код...
Теперь, когда вы вызываете adding_balance, self.adding_ui.setupUi(self.window2) не будет конфликтовать с self.main_ui. В целом, каждый экземпляр диалогового окна или главного окна должен иметь свой собственный Ui класс. Это улучшит структуру вашего кода и устранит подобные конфликты.
Добавить аргумент
и в adding_balance(self) добавить:
self.ui.setupUi(self.window2, self.window2)
При включении без этой строки:self.ui.setupUi(self, self)
self.ui.setupUi(self)
и в adding_balance(self) добавить:
self.ui.setupUi(self.window2, self.window2)
Проблема, которую вы описываете, связана с отсутствием передачи аргументов в функцию обработчика кнопки. Когда вы подключаете функцию-обработчик к кнопке, она должна иметь определенную сигнатуру с заданными аргументами, иначе возникает ошибка.
Вот пример кода, в котором кнопка открывает всплывающее диалоговое окно:
from PyQt6.QtWidgets import QApplication, QMainWindow, QDialog, QPushButton
class Dialog(QDialog):
def __init__(self, parent=None):
super().__init__(parent)
self.setWindowTitle('Dialog')
class MainWindow(QMainWindow):
def __init__(self, parent=None):
super().__init__(parent)
button = QPushButton('Open Dialog', self)
button.clicked.connect( self.open _dialog)
def open_dialog(self):
dialog = Dialog(self)
dialog.exec()
app = QApplication([])
window = MainWindow()
window.show()
app.exec()
Здесь мы создаем главное окно `MainWindow` и кнопку `Open Dialog`. При нажатии на кнопку вызывается метод `open_dialog`, который создает и отображает всплывающее диалоговое окно `Dialog`.
Важно отметить, что метод `open_dialog` не принимает никаких аргументов в данном примере.
Убедитесь, что вы передаете правильные аргументы в функцию обработчика кнопки и что ваша функция имеет правильную сигнатуру (включая необходимые аргументы).
Если у вас возникнут дополнительные вопросы или проблемы, пожалуйста, уточните их.
Вот пример кода, в котором кнопка открывает всплывающее диалоговое окно:
from PyQt6.QtWidgets import QApplication, QMainWindow, QDialog, QPushButton
class Dialog(QDialog):
def __init__(self, parent=None):
super().__init__(parent)
self.setWindowTitle('Dialog')
class MainWindow(QMainWindow):
def __init__(self, parent=None):
super().__init__(parent)
button = QPushButton('Open Dialog', self)
button.clicked.connect( self.open _dialog)
def open_dialog(self):
dialog = Dialog(self)
dialog.exec()
app = QApplication([])
window = MainWindow()
window.show()
app.exec()
Здесь мы создаем главное окно `MainWindow` и кнопку `Open Dialog`. При нажатии на кнопку вызывается метод `open_dialog`, который создает и отображает всплывающее диалоговое окно `Dialog`.
Важно отметить, что метод `open_dialog` не принимает никаких аргументов в данном примере.
Убедитесь, что вы передаете правильные аргументы в функцию обработчика кнопки и что ваша функция имеет правильную сигнатуру (включая необходимые аргументы).
Если у вас возникнут дополнительные вопросы или проблемы, пожалуйста, уточните их.
Потому что экземпляр класса нужно создать, а не просто класс впихнуть.
Не
Не
self.ui = AddingDialog
А self.ui = AddingDialog()
Для создания всплывающего диалогового окна в PyQt6/PySide6, которое будет открываться при нажатии кнопки из главного окна, вы можете использовать следующий шаблонный код:
Создайте файл с вашим главным окном, сгенерированным с помощью Qt Designer (назовем его main_window.ui).
Создайте еще один файл для вашего всплывающего диалогового окна (например, dialog.ui) с помощью Qt Designer. В этом окне вы можете разместить необходимые элементы управления и настройки.
Компилируйте файлы .ui в Python-код с помощью pyuic6. Вы можете выполнить следующую команду в командной строке:
bash
Copy code
pyuic6 main_window.ui -o main_window_ui.py
pyuic6 dialog.ui -o dialog_ui.py
Создайте файл Python для вашего приложения и используйте их следующим образом:
python
Copy code
import sys
from PyQt6.QtWidgets import QApplication, QMainWindow, QDialog
from main_window_ui import Ui_MainWindow
from dialog_ui import Ui_Dialog
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.ui = Ui_MainWindow()
self.ui.setupUi(self)
self.ui.openDialogButton.clicked.connect(self.open_dialog)
def open_dialog(self):
dialog = QDialog(self)
dialog_ui = Ui_Dialog()
dialog_ui.setupUi(dialog)
result = dialog.exec()
def main():
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec())
if __name__ == '__main__':
main()
В этом коде open_dialog метод связывает кнопку "openDialogButton" из главного окна с функцией open_dialog, которая создает и открывает всплывающее диалоговое окно. Вы можете настроить содержимое диалогового окна в файле dialog.ui и добавить необходимую логику обработки событий.
Запустите ваше приложение с помощью python ваш_файл.py.
Теперь у вас должно быть всплывающее диалоговое окно, которое открывается при нажатии кнопки в вашем главном окне.
Создайте файл с вашим главным окном, сгенерированным с помощью Qt Designer (назовем его main_window.ui).
Создайте еще один файл для вашего всплывающего диалогового окна (например, dialog.ui) с помощью Qt Designer. В этом окне вы можете разместить необходимые элементы управления и настройки.
Компилируйте файлы .ui в Python-код с помощью pyuic6. Вы можете выполнить следующую команду в командной строке:
bash
Copy code
pyuic6 main_window.ui -o main_window_ui.py
pyuic6 dialog.ui -o dialog_ui.py
Создайте файл Python для вашего приложения и используйте их следующим образом:
python
Copy code
import sys
from PyQt6.QtWidgets import QApplication, QMainWindow, QDialog
from main_window_ui import Ui_MainWindow
from dialog_ui import Ui_Dialog
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.ui = Ui_MainWindow()
self.ui.setupUi(self)
self.ui.openDialogButton.clicked.connect(self.open_dialog)
def open_dialog(self):
dialog = QDialog(self)
dialog_ui = Ui_Dialog()
dialog_ui.setupUi(dialog)
result = dialog.exec()
def main():
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec())
if __name__ == '__main__':
main()
В этом коде open_dialog метод связывает кнопку "openDialogButton" из главного окна с функцией open_dialog, которая создает и открывает всплывающее диалоговое окно. Вы можете настроить содержимое диалогового окна в файле dialog.ui и добавить необходимую логику обработки событий.
Запустите ваше приложение с помощью python ваш_файл.py.
Теперь у вас должно быть всплывающее диалоговое окно, которое открывается при нажатии кнопки в вашем главном окне.
Похожие вопросы
- Функции и аргументы
- Где-то ошибка. Помогите.
- объясните мне как смотреть код и видеть причину ошибки? Это опыт работы, практики, гениальности или чего-то еще?
- Где ошибка в коде? (Python)
- Ошибка в программе
- Кто знает почему выходит ошибка? ПРОГРАММИРОВАНИЕ PYTHON
- Ошибка в коде стандарт PEP8 Python
- Питон. Ошибка в программе. Вычисление простых чисел
- Cannot import name 'XXX' from 'XXXXX' ошибка возникает как исправить?
- Не открывает xlrd файлы выдаёт ошибку, что делать?
Попробую