Python Forum
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
GUI crashes
#1
Hello, I need some help in GUI programming because unfortunately I can't find the error...

I would like to get a folder path using a FolderBrowserDialog.

It's about the "button_created_files_clicked" and "button_files_to_convert_clicked" functions in the "AdjustmentsWindow" class.

When I click the "button_adjustments" button in the "MainWindow" window, the GUI crashes.

What can be the reason?

Many thanks for the help!!

import sys
from pathlib import Path

from PyQt6.QtGui import QFont
from PyQt6.QtWidgets import (
    QApplication,
    QLabel,
    QMainWindow,
    QPushButton,
    QHBoxLayout,
    QVBoxLayout,
    QWidget,
    QGroupBox,
    QListWidget,
    QCheckBox,
    QRadioButton,
    QLineEdit,
    QFileDialog,
)


class MovePdfsToWindow(QWidget):
    def __init__(self):
        super().__init__()
        layout = QVBoxLayout()
        self.label = QLabel("simplex feeder tool")
        layout.addWidget(self.label)
        self.setLayout(layout)


class ExportMergeFilesWindow(QWidget):
    def __init__(self):
        super().__init__()

        layout = QVBoxLayout()
        label = QLabel("")
        layout.addWidget(label)
        self.setLayout(layout)


class ExportPdfWindow(QWidget):
    def __init__(self):
        super().__init__()
        label = QLabel("export pdf(s)")
        label.setFont(QFont('Times', 12))
        label2 = QLabel("what would you like to export from the pdf?")
        label2.setFont(QFont('Times', 12))
        label3 = QLabel("which pages would you like to receive?")
        label3.setFont(QFont('Times', 12))
        radiobutton = QRadioButton("specific page(s)")
        radiobutton.setFont(QFont('Times', 12))
        radiobutton2 = QRadioButton("specific page range(s)")
        radiobutton2.setFont(QFont('Times', 12))
        radiobutton3 = QRadioButton("all pages individually")
        radiobutton3.setFont(QFont('Times', 12))
        button = QPushButton("apply selection")
        button.setFont(QFont('Times', 12))
        layout = QVBoxLayout()
        for t in [label, label2, label3, radiobutton, radiobutton2, radiobutton3, button]:
            layout.addWidget(t)
        self.setLayout(layout)


class LineEditWindow(QWidget):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("abc")
        self.resize(300, 50)
        self.layout = QVBoxLayout()
        self.label = QLabel("Please enter a profile's name")
        self.label.setFont(QFont('Times', 12))
        self.lineedit = QLineEdit()
        self.lineedit.setFont(QFont('Times', 12))
        self.layout.addWidget(self.label)
        self.layout.addWidget(self.lineedit)
        self.setLayout(self.layout)
        print(self.lineedit)


class AdjustmentsWindow(QWidget):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("abc")
        self.resize(300, 150)
        self.label = QLabel("adjustments")
        self.label.setFont(QFont('Times', 12))
        self.button_files_to_convert = QPushButton("path to converted files")
        self.button_files_to_convert.setFont(QFont('Times', 12))
        self.button_created_files = QPushButton("path to created files")
        self.button_created_files.setFont(QFont('Times', 12))
        self.button_donate = QPushButton("donate")
        self.button_donate.setFont(QFont('Times', 12))
        self.layout = QVBoxLayout()
        for k in [self.label, self.button_converted_files, self.button_created_files, self.button_donate]:
            self.layout.addWidget(k)
        self.setLayout(self.layout)
        self.button_files_to_convert.clicked.connect(self.button_files_to_convert_clicked)
        self.button_created_files.clicked.connect(self.button_created_files_clicked)

    def button_created_files_clicked(self):
        dialog = QFileDialog()
        path_created_files = dialog.getExistingDirectory(self, 'Select Folder')
        print(path_created_files)
        self.w.show()

    def button_files_to_convert_clicked(self):
        dialog = QFileDialog()
        path_files_to_convert = dialog.getExistingDirectory(self, 'Select Folder')
        print(path_files_to_convert)
        self.w.show()


class MainWindow(QMainWindow):
    def __init__(self, parent=None):
        # No additional window yet
        self.w = None
        super(MainWindow, self).__init__(parent)
        self.setWindowTitle("abc")
        self.resize(400, 600)
        self.central_widget = QWidget()
        self.setCentralWidget(self.central_widget)
        # center MainWindow to screen
        qr = self.frameGeometry()
        cp = self.screen().availableGeometry().center()
        qr.moveCenter(cp)
        self.move(qr.topLeft())
        # --------------------- groupbox_have ---------------------
        self.groupbox_have = QGroupBox("what do you have?")
        self.groupbox_have.setFont(QFont('Times', 12))
        self.groupbox_have.font().setBold(True)
        self.groupbox_have_layout = QVBoxLayout()
        self.listbox_medium = QListWidget()
        self.listbox_medium.setFont(QFont('Times', 12))
        self.listbox_medium2 = QListWidget()
        self.listbox_medium2.setFont(QFont('Times', 12))
        self.checkbox = QCheckBox("stack contains patchTpages")
        self.checkbox.setFont(QFont('Times', 12))
        for x in [self.listbox_medium, self.listbox_medium2, self.checkbox]:
            self.groupbox_have_layout.addWidget(x)
        self.groupbox_have.setLayout(self.groupbox_have_layout)
        # --------------------- groupbox_receive ---------------------
        self.groupbox_receive = QGroupBox("what would you like to receive?")
        self.groupbox_receive.setFont(QFont('Times', 12))
        self.groupbox_receive.font().setBold(True)
        self.groupbox_receive_layout = QVBoxLayout()
        self.listbox_target = QListWidget()
        self.listbox_target.setFont(QFont('Times', 12))
        self.groupbox_move = QGroupBox("move file(s) to")
        self.groupbox_move.setFont(QFont('Times', 12))
        self.groupbox_move.font().setBold(True)
        self.checkbox_move_to = QCheckBox("move file(s) to desired folder(s)")
        self.checkbox_move_to.setFont(QFont('Times', 12))
        self.groupbox_move_layout = QVBoxLayout()
        self.groupbox_move_layout.addWidget(self.checkbox_move_to)
        self.groupbox_move.setLayout(self.groupbox_move_layout)
        self.groupbox_receive_layout = QVBoxLayout()
        for y in [self.listbox_target, self.groupbox_move]:
            self.groupbox_receive_layout.addWidget(y)
        self.groupbox_receive.setLayout(self.groupbox_receive_layout)
        # --------------------- groupbox_profile ---------------------
        self.groupbox_profile = QGroupBox("which profile should be used?")
        self.groupbox_profile.setFont(QFont('Times', 12))
        self.groupbox_profile.font().setBold(True)
        self.listbox_profile = QListWidget()
        self.listbox_profile.setFont(QFont('Times', 12))
        self.button_add_profile = QPushButton("add profile")
        self.button_add_profile.setFont(QFont('Times', 12))
        self.button_clear_profile = QPushButton("clear profile")
        self.button_clear_profile.setFont(QFont('Times', 12))
        self.groupbox_profile_intern_layout = QHBoxLayout()
        for x in [self.button_add_profile, self.button_clear_profile]:
            self.groupbox_profile_intern_layout.addWidget(x)
        self.groupbox_profile_layout = QVBoxLayout()
        self.groupbox_profile_layout.addWidget(self.listbox_profile)
        self.groupbox_profile_layout.addLayout(self.groupbox_profile_intern_layout)
        self.groupbox_profile.setLayout(self.groupbox_profile_layout)
        # --------------------------------------------------------------
        self.button_apply_selection = QPushButton("apply selection")
        self.button_apply_selection.setFont(QFont('Times', 12))
        self.button_adjustments = QPushButton("adjustments")
        self.button_adjustments.setFont(QFont('Times', 12))
        self.label = QLabel("abc")
        self.label.setFont(QFont('Times', 12))

        self.layout_base = QVBoxLayout()
        for c in [self.label, self.groupbox_have, self.groupbox_receive, self.groupbox_profile, self.button_apply_selection, self.button_adjustments]:
            self.layout_base.addWidget(c)
        self.central_widget.setLayout(self.layout_base)

        # clear listbox
        self.listbox_medium.clear()
        self.listbox_medium2.clear()
        self.listbox_target.clear()
        # fill listbox
        self.listbox_medium.insertItem(0, "paper")
        self.listbox_medium.insertItem(1, "file(s)")
        self.listbox_medium2.insertItem(0, "-")
        self.listbox_target.insertItem(0, "-")

        self.button_add_profile.clicked.connect(self.button_add_profile_clicked)
        self.button_clear_profile.clicked.connect(self.button_clear_profile_clicked)
        self.button_apply_selection.clicked.connect(self.button_apply_selection_clicked)
        self.button_adjustments.clicked.connect(self.button_adjustments_clicked)

    def button_add_profile_clicked(self):
        if self.w is None:
            self.w = LineEditWindow()
        self.w.show()


    def button_clear_profile_clicked(self):
        print("clear_profile")

    def button_adjustments_clicked(self):
        if self.w is None:
            self.w = AdjustmentsWindow()
        self.w.show()

    def button_apply_selection_clicked(self):
        current_index = self.listbox_medium.currentRow()
        if current_index == 0:
            print("paper")
        if current_index == 1:
            print("files")


if __name__ == '__main__':
    app = QApplication(sys.argv)
    app.setStyleSheet(Path("stylesheet.qss").read_text())
    win = MainWindow()
    win.show()
    app.exec()
Reply
#2
The error message says it:

Output:
AttributeError: 'AdjustmentsWindow' object has no attribute 'button_converted_files'
Reply
#3
(Jul-26-2023, 04:55 PM)Axel_Erfurt Wrote: The error message says it:

Output:
AttributeError: 'AdjustmentsWindow' object has no attribute 'button_converted_files'

Hi,

I got no error message...

This appears:
Process finished with exit code -1073740791 (0xC0000409)
Reply
#4
(Jul-26-2023, 05:06 PM)flash77 Wrote:
(Jul-26-2023, 04:55 PM)Axel_Erfurt Wrote: The error message says it:

Output:
AttributeError: 'AdjustmentsWindow' object has no attribute 'button_converted_files'

Hi,

I got no error message...

This appears:
Process finished with exit code -1073740791 (0xC0000409)

I found the error:
a typo in the button' name
line 94

thanks a lot...
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  [Tkinter] Clicking on the button crashes the TK window ODOshmockenberg 1 2,258 Mar-10-2022, 05:18 PM
Last Post: deanhystad
  [PyQt] App crashes when reopening a subwindow JayCee 13 5,109 Aug-04-2021, 01:51 AM
Last Post: JayCee
  [PyGUI] My GUI crashes after command MLGpotato 1 1,910 Feb-21-2021, 03:17 PM
Last Post: deanhystad
  [PyQt] PyQT5 Thread crashes after a while Suresh 0 1,992 Jul-21-2020, 07:53 AM
Last Post: Suresh
  PyQt5 : Interpreter Crashes While Initializing Message Box iMuny 7 5,767 Aug-29-2019, 01:38 PM
Last Post: iMuny

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020