Python и Qt стандартные диалоговые окна tutorial

preview_player
Показать описание
Это видео продолжает серию видео-записок по Python с обзорами практических приёмов программирования.

Хочу специально выделить из общего ряда видеоматериалы, посвящённые обзорам на элементы GUI от Qt (см. в ссылках). В них можно ознакомится с элементами пользовательского интерфейса. В дальнейшем возможно использовать написанные для элементов GUI функции в проекте PyScientistNotes.

В этой видео-заметке привожу обзор возможностей PyQt5 по использованию стандартных пользовательских диалогов из модуля QtWidgets, они представлены соответствующими классами. Это диалоги: ввода пользователем текста и чисел (class QInputDialog), выбора пользователем цвета (class QColorDialog ) и параметров шрифта (class QFontDialog ). Более подробно остановимся на стандартных диалогах выбора файла и папок (class QFileDialog ).

Ссылки на сопутствующие материалы:

Ссылки на предыдущие видео по теме:
Видео 1: Python настройка рабочего пространства, использование PyCharm
Видео 2: Python функции
Видео 3: Python классы
Видео 4: Графический интерфейс Qt для Python, или PyQt
Видео 5: Python компиляция программ, cx_Freeze и другие компиляторы
Видео 6.1: Библиотека Matplotlib создание графиков для анализа данных
Видео 6.2: Библиотека matplotlib и Qt встраивание графиков в графический интерфейс Qt
Видео 7: Matplotlib модуль Animation класс FuncAnimation (автообновление графиков)
Видео 9.1: Классы QListWidget и QListView сопоставительный анализ, простой пример применения QListWidget
Видео 9.2: Класс QListView пример применения с использованием QtCore.QabstractListModel
Видео 10: Python и Excel взаимодействие с excel (библиотеки xlrd, xlwt, openpyxl, win32com)
Видео 11: обзор виджета QTableWidget и практическое использование
Видео №12.1 обзор виджета QStackedWidget использование QComboBox и QPushButton в качестве переключателей
Видео №12.2 Продолжение обзора виджета QStackedWidget использование QToolButton в качестве переключателей, настройка статического и динамического внешнего вида QToolButton c использованием qss.
Видео 13.1 Python и создание базы данных данных на движке СУБД sqlite3 с использованием стандартной библиотеки.
Видео 13.2 Python и sqlite3 внесение изменений в базу данных (СУБД SQLite), практический пример управления данными в базе
Видео 13.3 Python и sqlite3 хранение изображений в базе данных с СУБД SQLite, практический пример.
Видео 13.4 Python и sqlite3 интеграция функционала базы данных в проект PyScientistNotes. (скоро появится)
Видео 14 Python и Qt обзор PyQt4, PyQt5, PySide и PySide2

В видео использованы следующие аудио материалы:
композиция Timeless исполнитель Constantine 2018г дабстеп (скоро появится).
Рекомендации по теме
Комментарии
Автор

Как всегда, ВСЕ ДОХОДЧИВО И ПОНЯТНО!!! Так держать!
Как предложение, создать видео, GUI-интерфейс и удаленное подключение к базе данных, синхронизация нескольких клиентов с базой данных. Думаю очень актуально.
Спасибо за труд.

АлексФри-зу
Автор

спасибо большое, вы мне очень помогли !

ЯнаКухаренко-ыф
Автор

import sys
from PyQt5 import QtGui, QtCore
from PyQt5.QtWidgets import QInputDialog, QFontDialog, QColorDialog, QFileDialog
from PyQt5.QtWidgets import QApplication, QMainWindow, QWidget, QVBoxLayout, QPushButton, QTextEdit, QLabel


def
pushButton_input_dialog = QPushButton()
input')
pushButton_input_dialog.setMinimumSize(QtCore.QSize(100, 40))




def
pushButton_color_dialog = QPushButton()
input')
pushButton_color_dialog.setMinimumSize(QtCore.QSize(100, 40))



def
pushButton_font_dialog = QPushButton()
input')
pushButton_font_dialog.setMinimumSize(QtCore.QSize(100, 40))




def
text_edit_for_dialog = QTextEdit()
text_edit_for_dialog.setMinimumSize(QtCore.QSize(400, 40))
self.text_edit_for_dialog = text_edit_for_dialog


def
pushButton_file_dialog = QPushButton()
choose')
pushButton_file_dialog.setMinimumSize(QtCore.QSize(100, 40))



def
pushButton_files_dialog = QPushButton()
choose')
pushButton_files_dialog.setMinimumSize(QtCore.QSize(100, 40))



def
pushButton_folder_dialog = QPushButton()
choose')
pushButton_folder_dialog.setMinimumSize(QtCore.QSize(100, 40))



def
pushButton_file_save_dialog = QPushButton()
file name for save')
pushButton_file_save_dialog.setMinimumSize(QtCore.QSize(100, 40))




def
text_edit_for_file_dialog = QTextEdit()
text_edit_for_file_dialog.setMinimumSize(QtCore.QSize(400, 40))
= text_edit_for_file_dialog



class
def __init__(self):
QMainWindow.__init__(self)
self.resize(500, 500)
self.setWindowTitle("Example Qdialog")
self.centralWidget = QWidget(self)
self.centralWidget.resize(500, 500)
self.vbox =










def input_dialog(self):
text, val_return = QInputDialog.getText(self, 'Input Dialog', 'Enter your digits or character:')
text_to_print = 'You input is: ' +str(text)+ '; Answer Type is: ' + str(type(text)) + 'Vlue return is:' + str(val_return)


def color_dialog(self):
color = QColorDialog.getColor()

{ background-color: %s }" % color.name())

def font_dialog(self):
font_description, val_return = QFontDialog.getFont()

object is: '+str(font_description))

def file_dialog(self):
dialog_name = 'Please choose some file to open'
folder_init_name =
filename = QFileDialog.getOpenFileName(self, dialog_name, folder_init_name, "Image files (*.jpg, *.gif, *.txt)")[0]


def files_dialog(self):
dialog_name = 'Please choose some file to open'
folder_init_name =
filename = QFileDialog.getOpenFileNames(self, dialog_name, folder_init_name, "Image files (*.jpg, *.gif);; Doc files (, *.txt)")


def folder_dialog(self):
dialog_name = 'Please choose some file to open'
folder_init_name =
foldername = QFileDialog.getExistingDirectory(self, dialog_name, folder_init_name)


def file_save_dialog(self):
dialog_name = 'Please choose some file to open'
folder_init_name =
save_filename = QFileDialog.getSaveFileName(self, dialog_name, folder_init_name, "Image files (*.jpg, *.gif, *.txt)")[0]


def main():
app = QApplication(sys.argv)
main = MainWindowForFileDialog()
main.show()
app.exec_()

if __name__ == '__main__':
main()

PyScientist
Автор

Спасибо! То что нужно. В довескок помогли разобраться с ошибкой -1073740791. С Python, как в целом с программированием, только знакомлюсь и многого не знаю. Все форумы облазил, кто-то советовал драйвер от видеокарты обновить, кто-то PyQt переустановить, а нужно было всего лишь аргументы дописать. Спасибо еще раз!!!

sypcbcu
Автор

Отлично. Сделайте урок по делегатам для TableView, чтобы в её ячейки можно было вставлять разные виджеты.

_sergeevich
Автор

Можно снять отдельное видео, посвященное дебагу приложений? Ошибка с данным кодом возникает во многих ситуациях, а нагуглить что-то толковое не получается. Есть ли способ получать трейсбек ошибок?

_WLAR_
Автор

Есть вопрос: а с помощью каких инструментов можно работаь напрямую с диалоговым окном винды?

markrudenko