Питон как сделать всплывающее окно pyqt
На этом шаге мы рассмотрим создание таких подсказок .
При работе с программой у пользователя могут возникать вопросы о предназначении того или иного компонента. Обычно для информирования пользователя служат надписи, расположенные над компонентом или левее его. Но часто либо место в окне ограничено, либо вывод этих надписей портит весь дизайн окна. В таких случаях принято выводить текст подсказки в отдельном окне без рамки при наведении указателя мыши на компонент. Подсказка автоматически скроется после увода курсора мыши или спустя определенное время.
- setToolTip (< Teкст >) — задает текст всплывающей подсказки. В качестве параметра можно указать простой текст или HTML -код. Чтобы отключить вывод подсказки, достаточно передать в этот метод пустую строку;
- toolTip () — возвращает текст всплывающей подсказки;
- setToolTipDuration (< Bpeмя >) — задает время, в течение которого всплывающая подсказка будет присутствовать на экране. Значение должно быть указано в миллисекундах. Если задать значение -1, PyQt будет сама вычислять необходимое время, основываясь на длине текста подсказки (это поведение по умолчанию);
- toolTipDuration () — возвращает время, в течение которого всплывающая подсказка будет присутствовать на экране;
- setWhatsThis (< Teкст >) — задает текст справки. Обычно этот метод используется для вывода информации большего объема, чем во всплывающей подсказке. У диалоговых окон в заголовке окна есть кнопка Справка , по нажатию которой курсор принимает вид стрелки со знаком вопроса, — чтобы в таком случае отобразить текст справки, следует нажать эту кнопку и щелкнуть на компоненте. Можно также сделать компонент активным и нажать комбинацию клавиш Shift+F1 . В качестве параметра можно указать простой текст или HTML -код. Чтобы отключить вывод подсказки, достаточно передать в этот метод пустую строку;
- whatsThis () — возвращает текст справки.
Создадим окно с кнопкой и зададим для них текст всплывающих подсказок и текст справки.
# -*- coding: utf-8 -*- from PyQt5 import QtCore, QtWidgets import sys app = QtWidgets.QApplication(sys.argv) window = QtWidgets.QWidget(flags=QtCore.Qt.Dialog) window.setWindowTitle("Всплывающие подсказки") window.resize(300, 70) button = QtWidgets.QPushButton("Закрыть окно", window) button.setFixedSize(150, 30) button.move(75, 20) button.setToolTip("Это всплывающая подсказка для кнопки") button.setToolTipDuration(3000) window.setToolTip("Это всплывающая подсказка для окна") button.setToolTipDuration(5000) button.setWhatsThis("Это справка для кнопки") window.setWhatsThis("Это справка для окна") button.clicked.connect(QtWidgets.qApp.quit) window.show() sys.exit(app.exec_())
Архив с файлом можно взять здесь.
Результат работы приложения изображен на рисунке 1.
Рис.1. Всплывающая подсказка
На следующем шаге мы рассмотрим закрытие окна из программы .
Диалоговые окна в PyQt5

Диалоговые окна (диалоги) являются неотъемлемой частью большинства современных графических приложений. Диалог в обычной жизни — это беседа между двумя и более людьми. В компьютерном приложении, диалог – это окно, которое используется, чтобы «беседовать» с приложением. Диалоги используются для ввода и изменения данных, изменения настроек приложения, и так далее.
QInputDialog
QInputDialog — простой удобный диалог для получения единственного значения от пользователя. Введённое значение может быть строкой, числом или пунктом из списка.
Пример имеет кнопку и виджет редактирования строки. Кнопка показывает диалог ввода. Вводимый текст может быть отображён в виджете редактирования строки.
Эта строка показывает диалог ввода. Первая строка – это заголовок диалога, вторая – сообщение внутри диалога. Диалог возвращает введённый текст и логическое значение. Если мы нажимаем кнопку «ОК», то логическое значение является правдой.
Текст, который мы получили из диалога, устанавливается в виджет редактирования строки.
QColorDialog
QColorDialog — виджет диалога для выбора цветовых значений.
" "Пример приложения показывает кнопку и QFrame. Фон виджета устанавливается чёрным. Используя QColorDialog, мы можем менять фон.
Это первоначальный цвет фона QtGui.QFrame.
Это строка высветит QColorDialog.
"Мы проверяем, является ли цвет валидным. Если мы нажимаем кнопку «Cancel», возвращается невалидный цвет. Если цвет валиден, мы меняем цвет фона, используя таблицы стилей (CSS).
QFontDialog
QFontDialog – это виджет диалога для выбора шрифта.
В нашем примере, мы имеем кнопку и метку. С помощью QFontDialog, мы меняем шрифт метки.
QFileDialog
QFileDialog – это диалог, который позволяет пользователям выбирать файлы или папки. Файлы могут быть выбраны и для открытия, и для сохранения.
Пример показывает строку меню, виджет редактирования текста и строку состояния. Пункт меню показывает QtGui.QFileDialog, который используется для выбора файла. Содержимое файла загружается в виджет редактирования текста.
Мы показываем QFileDialog. Первая строка в методе getOpenFileName() – это заголовок. Вторая строка указывает на показываемую директорию. По умолчанию, файловый фильтр установлен в положение «Все файлы (*)».
Выбранный файл читается и содержимое файла записывается в виджет редактирования текста.
В этой части руководства PyQt5, мы работали с диалогами.
Для вставки кода на Python в комментарий заключайте его в теги
- Модуль csv - чтение и запись CSV файлов
- Создаём сайт на Django, используя хорошие практики. Часть 1: создаём проект
- Онлайн-обучение Python: сравнение популярных программ
- Книги о Python
- GUI (графический интерфейс пользователя)
- Курсы Python
- Модули
- Новости мира Python
- NumPy
- Обработка данных
- Основы программирования
- Примеры программ
- Типы данных в Python
- Видео
- Python для Web
- Работа для Python-программистов
- Сделай свой вклад в развитие сайта!
- Самоучитель Python
- Карта сайта
- Отзывы на книги по Python
- Реклама на сайте
Как сделать всплывающее при наведение на Label окно в PyQT?
Привет обитателям! Спасибо, что обратили внимание на мой вопрос, заключащийся в следующем:
Хочу добавить фичу в проект, которая совсем не нужна для его корректного функционирования
При наведение на Label рядом с курсором должно появляться маленькое окошко с информацией, исчезающее в случае увода курсора с лейбла. Перехватить события мыши смогу, вопрос какой виджет открывать и как открывать у курсора, чтоб он не создавал новое окно ( в привычном смысле )
- Вопрос задан более трёх лет назад
- 493 просмотра
1 комментарий
Простой 1 комментарий
Как создать модальное окно в PyQt5?
Как мне создать второе окно, всплывающее по нажатию кнопки, установленной в главном окне? После нажатия на кнопку, окно Modal появляется и тут же закрывается.
Если убрать комментарии, приложение перестанет работать вообще. Что мне необходимо добавить в свой код, что окно не закрывалось и являлось модальным? Пример, как пытался сделать я:
from PyQt5 import QtWidgets from PyQt5.QtCore import Qt from PyQt5.QtWidgets import QWidget import sys class Main(QtWidgets.QWidget): def __init__(self, parent=None): super().__init__(parent) self.initUI() def initUI(self): self.resize(500, 500) self.widget = QWidget() self.testBtn = QtWidgets.QPushButton(self.widget) self.testBtn.setText("Test") self.testBtn.clicked.connect(self.open) self.vbox = QtWidgets.QVBoxLayout() self.vbox.addWidget(self.widget) self.setLayout(self.vbox) def open(self): app2 = Modal() app2.show() class Modal(QtWidgets.QWidget): def __init__(self, parent=None): super().__init__(parent) # self.setWindowModality(Qt.WindowModal) # self.setModal(True) self.resize(200, 200) if __name__ == "__main__": app = QtWidgets.QApplication([]) application = Main() application.show() sys.exit(app.exec_())
Отслеживать
73.6k 110 110 золотых знаков 38 38 серебряных знаков 55 55 бронзовых знаков