Я столкнулся с проблемой моего кода PyQt5: когда я запускаю свой код, программа не запускалась. Я не знаю, как это исправить.
вот код
import sys
из PyQt5.QtCore import Qt, QDateTime, QDate
из PyQt5, импорт uic
из PyQt5.QtGui, импорт QStandardItemModel, QStandardItem
из PyQt5.QtWidgets, импорт (
QCalendarWidget,
QLineEdit,
QDateTimeEdit,< br />QRadioButton,
QPlainTextEdit,
QComboBox,
QDialog,
QPushButton,
QTreeView,
QTabWidget,
QApplication,
QMessageBox,
QHeaderView,
)
из resources_rc import *
class ToDoInterface(QDialog):
def init(self):
super(ToDoInterface, self).init()
uic.loadUi("UIoutput/ToDo_interface.ui", себя)
Код: Выделить всё
self.widget_connect()
# Set up buttons
self.radioButton.setChecked(True)
# Set the initial state of the DateTimeEdit widget based on the radio button state
self.set_deadline_visibility()
self.task_tree()
self.completed_tree()
self.pastdue_tree()
def task_tree(self):
self.taskView.header().setSectionResizeMode(QHeaderView.ResizeToContents)
self.taskView.header().setSectionResizeMode(0, QHeaderView.ResizeToContents)
self.taskView.header().setSectionResizeMode(1, QHeaderView.ResizeToContents)
self.taskView.header().setSectionResizeMode(2, QHeaderView.ResizeToContents)
self.taskView.header().setSectionResizeMode(3, QHeaderView.ResizeToContents)
self.taskView.header().setSections(['Date', 'Task', "Deadline", "Priority"])
def completed_tree(self):
self.completedTreeView.header().setSectionResizeMode(QHeaderView.ResizeToContents)
self.completedTreeView.header().setSectionResizeMode(0, QHeaderView.ResizeToContents)
self.completedTreeView.header().setSectionResizeMode(1, QHeaderView.ResizeToContents)
self.completedTreeView.header().setSectionResizeMode(2, QHeaderView.ResizeToContents)
self.completedTreeView.header().setSectionResizeMode(3, QHeaderView.ResizeToContents)
self.completedTreeView.header().setSections(['Date', 'Task', "Deadline", "Priority"])
def pastdue_tree(self):
self.pastDueTreeView.header().setSectionResizeMode(QHeaderView.ResizeToContents)
self.pastDueTreeView.header().setSectionResizeMode(0, QHeaderView.ResizeToContents)
self.pastDueTreeView.header().setSectionResizeMode(1, QHeaderView.ResizeToContents)
self.pastDueTreeView.header().setSectionResizeMode(2, QHeaderView.ResizeToContents)
self.pastDueTreeView.header().setSectionResizeMode(3, QHeaderView.ResizeToContents)
self.pastDueTreeView.header().setSections(['Date', 'Task', "Deadline", "Priority"])
self.treeView.setAlternatingRowColors(True)
self.completedTreeView.setAlternatingRowColors(True)
self.pastDueTreeView.setAlternatingRowColors(True)
def widget_connect(self):
# Connect signals and slots
self.calendarWidget.clicked.connect(self.handle_calendar_click)
self.radioButton.toggled.connect(self.set_deadline_visibility)
self.Add_Task.clicked.connect(self.add_toTreeView)
self.TabWidget.currentChanged.connect(self.tab_changed)
self.Add_Task.clicked.connect(self.add_toTreeView)
self.update_button.clicked.connect(self.update_task)
self.delete_button.clicked.connect(self.delete_task)
self.complete_button.clicked.connect(self.mark_as_complete)
self.TabWidget.currentChanged.connect(self.tab_changed)
def handle_calendar_click(self):
# Get the selected date from the calendar
selected_date = self.calendarWidget.selectedDate()
# Format the date as desired (e.g., month name, date, and year)
formatted_date = selected_date.toString("MMMM dd, yyyy")
# Set the formatted date in the text box
self.lineEdit_2.setText(formatted_date)
def set_deadline_visibility(self):
# Set the visibility of the DateTimeEdit widget based on the radio button state
self.dateTimeEdit_2.setEnabled(self.radioButton.isChecked())
def add_toTreeView(self):
Date = self.calendarWidget.selectedDate().toString("MMMM dd, yyyy")
Task = self.Title_text.text()
Deadline = self.dateTimeEdit_2.dateTime().toString("MMMM dd, yyyy h:mm AP", "") \
if self.radioButton.isChecked() else "No Due Date"
Priority = self.comboBox.currentText()
# Create a new item for the TreeView
new_item = QStandardItem()
new_item.setData(Date, Qt.DisplayRole)
new_item.setData(Task, Qt.DisplayRole)
new_item.setData(Deadline, Qt.DisplayRole)
new_item.setData(Priority, Qt.DisplayRole)
# Добавляем элемент в TreeView текущей вкладки
current_tab_index = self.TabWidget.currentIndex()
if current_tab_index == 0:
model = self.treeView.model()
если модель равна None:
model = QStandardItemModel()
model.setHorizontalHeaderLabels([ «Дата», «Задача», «Срок», «Приоритет»])
self.treeView.setModel(model)
model.appendRow(new_item)
elif current_tab_index == 1:< br /> model = self.completedTreeView.model()
если модель равна None:
model = QStandardItemModel()
model.setHorizontalHeaderLabels(['Date', 'Task', "Deadline" , "Приоритет"])
self.completedTreeView.setModel(model)
model.appendRow(new_item)
elif current_tab_index == 2:
model = self.pastDueTreeView.model( )
если модель равна None:
model = QStandardItemModel()
model.setHorizontalHeaderLabels(['Date', 'Task', «Deadline», «Priority»])
self .pastDueTreeView.setModel(model)
model.appendRow(new_item)
def tab_changed(self, index):
# Обновляем текущий TreeView при изменении вкладки
current_tab_index = self.TabWidget.currentIndex()
if current_tab_index == 0:
self.update_current_tree_view(self.treeView)
elif current_tab_index == 1:
self.update_current_tree_view( self.completedTreeView)
elif current_tab_index == 2:
self.update_current_tree_view(self.pastDueTreeView)
def update_current_tree_view(self, Tree_view):
# Функция для обновления текущая модель TreeView
= Tree_view.model()
selected_indexes = Tree_view.selectedIndexes()
if selected_indexes:
selected_item = model.itemFromIndex(selected_indexes[0] )
self.Title_text.setText(selected_item.data(Qt.DisplayRole))
self.calendarWidget.setSelectedDate(QDate.fromString(selected_item.data(Qt.DisplayRole), "MMMM дд , гггг"))
self.dateTimeEdit_2.setDateTime(
QDateTime.fromString(selected_item.data(Qt.DisplayRole), "MMMM дд, гггг ч:мм AP")
)
self.comboBox.setCurrentText(selected_item.data(Qt.DisplayRole))
def update_task(self):
# Обновляем выбранную задачу в текущем TreeView
current_tab_index = self.TabWidget.currentIndex()
current_tree_view = self.get_current_tree_view()
selected_indexes = current_tree_view.selectedIndexes()
if selected_indexes:
selected_item = current_tree_view.model( ).itemFromIndex(selected_indexes[0])
selected_item.setData(
self.calendarWidget.selectedDate().toString("ММММ дд, гггг"), Qt.DisplayRole
)
selected_item.setData(self.Title_text.text(), Qt.DisplayRole)
selected_item.setData(
self.dateTimeEdit_2.dateTime().toString("MMMM дд, гггг ч: мм AP", ""), Qt.DisplayRole
)
selected_item.setData(self.comboBox.currentText(), Qt.DisplayRole)
def mark_as_complete(self):
# Переместить выбранную задачу на вкладку «Завершено»
current_tree_view = self.get_current_tree_view()
Completed_tree_view = self.completedTreeView
selected_indexes = current_tree_view.selectedIndexes()
if selected_indexes:
selected_item = current_tree_view.model().itemFromIndex(selected_indexes[0])
current_tree_view.model().removeRow(selected_item.row())
Completed_tree_view.model( ).appendRow(selected_item.clone())
def delete_task(self):
# Удалить выбранную задачу из текущего TreeView
current_tree_view = self.get_current_tree_view()
selected_indexes = current_tree_view.selectedIndexes()
if selected_indexes:
подтверждение = QMessageBox.question(
self, 'Удалить задачу', 'Вы уверены, что хотите удалить это задача?', QMessageBox.Да | QMessageBox.No,
QMessageBox.No
)
если подтверждение == QMessageBox.Да:
current_tree_view.model().removeRow(selected_indexes[0].row ())
def get_current_tree_view(self):
# Возвращает текущий активный TreeView на основе выбранной вкладки
current_tab_index = self.TabWidget.currentIndex()
if current_tab_index == 0:
return self.treeView
elif current_tab_index == 1:
return self.completedTreeView
elif current_tab_index == 2:
return self.pastDueTreeView< br />app = QApplication(sys. argv)
Код: Выделить всё
# Create an instance of the main window
window = ToDoInterface()
# Set properties for the main window
window.setFixedHeight(610)
window.setFixedWidth(1000)
# Show the main window
window.show()
sys.exit(app.exec_())
Источник: https://stackoverflow.com/questions/781 ... -didnt-run