Как закрыть окно через python
Перейти к содержимому

Как закрыть окно через python

  • автор:

Python-сообщество

[RSS Feed]

  • Начало
  • » Центр помощи
  • » Помогите убрать окно!

#1 Окт. 14, 2021 20:29:53

tim.ladaev Зарегистрирован: 2021-10-13 Сообщения: 3 Репутация: 0 Профиль Отправить e-mail

Помогите убрать окно!

Здравствуйте! хотел узнать как закрыть окно, но не закрыть программу. Хочу сделать программу, друзей разыгрывать, открывай в определенное время ссылку сайта, все кроме ввода сделал, осталось только закрыть окно, но оставить программу ждать своего часа.
from time import sleep
import datetime
from os import system
import webbrowser
print(‘введите ссылку видео/фото/сайта или тп: (пример: https://www.youtube.com/watch?v=dQw4w9WgXcQ)’)
k=input()
print(‘введите время запуска, разделяя час, минуты и секунды нажав enter:’)
h=int(input())
m=int(input())
s=int(input())
system(‘cls’)
print(‘ожидайте’)
a=datetime.datetime.now()
a=a.time()
b=datetime.time(h, m, s)
while a a=datetime.datetime.now()
a=a.time()
webbrowser.open(k, new=1)

#2 Окт. 14, 2021 21:56:10

PEHDOM Зарегистрирован: 2016-11-28 Сообщения: 2196 Репутация: 294 Профиль Отправить e-mail

Помогите убрать окно!

tim.ladaev какое окно? какую программу? какая ОС? вы про консоль интерпретатора?

[code python][/code]

Бериегите свое и чужое время.

#3 Окт. 15, 2021 21:53:53

tim.ladaev Зарегистрирован: 2021-10-13 Сообщения: 3 Репутация: 0 Профиль Отправить e-mail

Помогите убрать окно!

Отредактировано tim.ladaev (Окт. 15, 2021 21:55:47)

#4 Окт. 15, 2021 21:55:25

tim.ladaev Зарегистрирован: 2021-10-13 Сообщения: 3 Репутация: 0 Профиль Отправить e-mail

Помогите убрать окно!

PEHDOM
tim.ladaev какое окно? какую программу? какая ОС? вы про консоль интерпретатора?

PEHDOM
tim.ladaev какое окно? какую программу? какая ОС? вы про консоль интерпретатора?

извините, впервые на форуме пишу. да, я про закрытие консоль интерпретатора. ос виндовс. программа должна получить время запуска и ссылку сайта которую она откроет в назначенное время.

[/ from time import sleep import datetime from os import system import webbrowser print('введите ссылку видео/фото/сайта или тп: (пример: https://www.youtube.com/watch?v=dQw4w9WgXcQ)') k=input() print('введите время запуска, разделяя час, минуты и секунды нажав enter:') h=int(input()) m=int(input()) s=int(input()) system('cls') print('ожидайте') a=datetime.datetime.now() a=a.time() b=datetime.time(h, m, s) while ab: a=datetime.datetime.now() a=a.time() webbrowser.open(k, new=1)] 

#5 Окт. 18, 2021 09:43:08

PEHDOM Зарегистрирован: 2016-11-28 Сообщения: 2196 Репутация: 294 Профиль Отправить e-mail

Помогите убрать окно!

tim.ladaev, ну смотрите, если это венда можно просто создать в таск шедулере задание. Можно создать новый процесс котороый будет висеть в памяти(pythonw.exe запускает интерперетатор без консоли) и ждать необходимого момента. Можно скрыть текущую консоль через ВинАПИ(либа pywin32) ShowWindow(hWnd, SW_HIDE). и опять же джать времени“ Ч”. Наверно есть еще варианты наверняка в subprocess.Popen тоже можно запустить без консоли, но нужно в документацию лезть, по памяти не помню.

[code python][/code]

Окна

По умолчанию приложение Tkinter имеет одно главное окно, которое представляет класс tkinter.Tk . Запуск приложение приводит к запуску главного окно, в рамках которого помещаются все виджеты. Закрытие главного окна приводит к завершению работы приложения. Однако в рамках главного окна также можно запускать вторичные, неглавные окна. Например, октроем новое окно по нажатию на кнопку:

from tkinter import * from tkinter import ttk root = Tk() root.title("METANIT.COM") root.geometry("250x200") def click(): window = Tk() window.title("Новое окно") window.geometry("250x200") button = ttk.Button(text="Создать окно", command=click) button.pack(anchor=CENTER, expand=1) root.mainloop()

Здесь по нажатию на кнопку создается новый объект window, у него устанавливается заголовок и размеры.

Создание окон в Tkinter и Python

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

Как и главное окно, вторичные окна могут иметь виджеты. Например, определим на новом окне метку:

from tkinter import * from tkinter import ttk root = Tk() root.title("METANIT.COM") root.geometry("250x200") def click(): window = Tk() window.title("Новое окно") window.geometry("250x200") label=ttk.Label(window, text="Принципиально новое окно") label.pack(anchor=CENTER, expand=1) button = ttk.Button(text="Создать окно", command=click) button.pack(anchor=CENTER, expand=1) root.mainloop()

Единственное не надо забывать у добавляемых виджетов устанавливать окно в качестве родительского контейнера

Создание окон Tk в Tkinter и Python

Удаление окна

Для удаления окна применяется меnод destroy()

from tkinter import * from tkinter import ttk root = Tk() root.title("METANIT.COM") root.geometry("250x200") def click(): window = Tk() window.title("Новое окно") window.geometry("250x200") close_button = ttk.Button(window, text="Закрыть окно", command=lambda: window.destroy()) close_button.pack(anchor="center", expand=1) open_button = ttk.Button(text="Создать окно", command=click) open_button.pack(anchor="center", expand=1) root.mainloop()

В данном случае в новом окне по нажатию на кнопку close_button срабатывает метод window.destroy() , который закрывает окно и по сути аналогичен нажатию на крестик в верхнем правом углу окна.

Определение окна в объектно-ориентированном стиле

В примере выше новое окно, его параметры и вложенные виджеты определялись внутри функции, однако это приводит к разбуханию кода функции. И гораздо проще вынести определение окна в отдельный класс:

from tkinter import * from tkinter import ttk class Window(Tk): def __init__(self): super().__init__() # конфигурация окна self.title("Новое окно") self.geometry("250x200") # определение кнопки self.button = ttk.Button(self, text="закрыть") self.button["command"] = self.button_clicked self.button.pack(anchor="center", expand=1) def button_clicked(self): self.destroy() root = Tk() root.title("METANIT.COM") root.geometry("250x200") def click(): window = Window() open_button = ttk.Button(text="Создать окно", command=click) open_button.pack(anchor="center", expand=1) root.mainloop()

Здесь определение окна вынесено в отдельный класс Window, который наследуется от класса tkinter.Tk. Благодаря этому мы можем вынести весь код определения окна в отдельную структурную единицу — класс, что позволит упростить управление кодом.

Окно поверх других окон

Для создания диалогового окна, которое располагается поверх главного окна, применяется класс Toplevel :

from tkinter import * from tkinter import ttk root = Tk() root.title("METANIT.COM") root.geometry("250x200") def dismiss(window): window.grab_release() window.destroy() def click(): window = Toplevel() window.title("Новое окно") window.geometry("250x200") window.protocol("WM_DELETE_WINDOW", lambda: dismiss(window)) # перехватываем нажатие на крестик close_button = ttk.Button(window, text="Закрыть окно", command=lambda: dismiss(window)) close_button.pack(anchor="center", expand=1) window.grab_set() # захватываем пользовательский ввод open_button = ttk.Button(text="Создать окно", command=click) open_button.pack(anchor="center", expand=1) root.mainloop()

Toplevel по сути то же самое окно Tk, которое располагается поверх других окон. В примере выше оно также имеет кнопку. Но кроме того, чтобы пользователь не мог перейти обратно к главному окну пока не закроет это диалоговое окно, применяется ряд методов. Прежде всего захватываем весь пользовательский ввод с помощью метода grab_set() :

window.grab_set()

В функции dismiss() , которая закрывает окно, освобождаем ввод с помощью метода grab_release()

window.grab_release()

Как закрыть tkinter окно через время

Открывается окно, в что-то написано. Через 5 секунд оно должно завершится,как мне это сделать? Ещё надо учитывать что это как доп. окно, то-есть есть ещё одно окно, которое должно продолжить работу. Вот код с окном которое должно завершится:

from tkinter import * import time window = Tk() window.title("123") window.overrideredirect(1) lblc = Label(window, text="Внимание:недостаточно кликов для X2",font=("Arial Bold", 15), background="SystemWindow") lblc.grid(column=0, row=0) window.mainloop() 

Отслеживать

задан 19 апр 2020 в 22:29

user383587 user383587

1 ответ 1

Сортировка: Сброс на вариант по умолчанию

Можно запустить window.destroy() с отложенным исполнением при помощи window.after()

window.after(5000, window.destroy) window.mainloop() 

Отслеживать

ответ дан 19 апр 2020 в 22:36

16.4k 2 2 золотых знака 15 15 серебряных знаков 24 24 бронзовых знака

Python-сообщество

[RSS Feed]

  • Начало
  • » GUI
  • » Закрыть окно при потере фокуса pyqt5

#1 Март 25, 2022 03:14:24

almax Зарегистрирован: 2018-09-21 Сообщения: 9 Репутация: 0 Профиль Отправить e-mail

Закрыть окно при потере фокуса pyqt5

Если взять простое окно, как сделать так, что бы при потере фокуса оно закрывалось?

import sys from PyQt5.QtWidgets import QApplication, QWidget from PyQt5.QtCore import Qt from PyQt5.QtWidgets import QLabel class Example(QWidget): def __init__(self): super().__init__() self.setWindowFlag(Qt.FramelessWindowHint) self.setWindowTitle('no title') self.setGeometry(1030, 0, 300, 200) self.label = QLabel(self) self.label.setText('text') app = QApplication(sys.argv) w = Example() w.show() sys.exit(app.exec_()) 

#2 Март 25, 2022 13:03:41

Rodegast От: Пятигорск Зарегистрирован: 2007-12-28 Сообщения: 2650 Репутация: 180 Профиль Отправить e-mail

Закрыть окно при потере фокуса pyqt5

Зачем тебе это нужно?

С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *