Python // Замораживание окна TkinterPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Python // Замораживание окна Tkinter

Сообщение Anonymous »

Начав с любительского уровня JavaScript, я только начал возиться с Python и попытался написать небольшой скрипт, который снова и снова проверяет, существует ли файл блокировки (выбранный пользователем), и уведомляет, если его нет. Код более-менее работает, но я не могу понять, как работать с окном списка. После выбора он зависает до тех пор, пока не завершится цикл while, но я не могу понять, как вернуться к отвечающему пользовательскому интерфейсу, хотя код продолжает работать правильно. Я хотел бы добавить сообщение, уведомляющее пользователя о том, что скрипт теперь «сканирует», с помощью дополнительной кнопки для выхода из скрипта.
Я почти уверен, что код довольно беспорядочный. , так как это мой первый проект, извините за это, но такое ощущение, что я не могу разобраться в этом самостоятельно, возясь на многих уровнях.
Я попробовал разбираюсь с функцией mainloop и обратным вызовом списка, но, похоже, я просто упускаю что-то основное.

Код: Выделить всё

import time
import os
import configparser
from tkinter import *
from tkinter import ttk

# importing folder path
config = configparser.ConfigParser()
config.read('config.ini')
projectpath = config.get('DEFAULT', 'path') #to do - check path exists

lckFiles = []
selectedFilePath = ""

winSelection = Tk()
winSelection.geometry('250x300')
winSelection.title('Locked')
listbox = Listbox(winSelection, width=40, height=10, selectmode=SINGLE)

for dirpath, dirnames, filenames in os.walk(projectpath):
for filename in [f for f in filenames if f.endswith(".lck")]:
listbox.insert(END, filename)
lckFiles.append(os.path.join(dirpath, filename))

def processSelection():
global selectedFilePath
selectedFilePath = lckFiles[listbox.curselection()[0]]

if not os.path.exists(selectedFilePath):
print("The file doesn't exist.")
quit()
else:
winSelection.quit()

btnSelect = Button(winSelection, text='Watch', command=processSelection)
btnSelect.pack(side='bottom')
listbox.pack()
winSelection.mainloop()

print("Start watching file...")
print(selectedFilePath)

fileLocked = True
while fileLocked:

if os.path.exists(selectedFilePath):
print("The file is still locked.")
time.sleep(30)

else:
print("The file is not locked anymore.")
fileLocked = False

win = Tk()
win.geometry("240x80")

Label(win, text="The File is unlocked now.", font=('Helvetica 14 bold')).pack(pady=10)

button_close = ttk.Button(win, text="Close", command=win.destroy)
button_close.pack(fill='x')
win.mainloop()
Ждем любой помощи. Заранее большое спасибо за уделенное время.
С уважением, Роб

Подробнее здесь: https://stackoverflow.com/questions/786 ... ter-window
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Почему мне нужно импортировать tkinter.messagebox, но не нужно импортировать tkinter.Tk() после импорта tkinter?
    Anonymous » » в форуме Python
    0 Ответы
    92 Просмотры
    Последнее сообщение Anonymous
  • Замораживание меток осей в верхней части фигуры в блестящем цвете R.
    Anonymous » » в форуме CSS
    0 Ответы
    23 Просмотры
    Последнее сообщение Anonymous
  • Замораживание пунктов только для требований проекта
    Anonymous » » в форуме Python
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous
  • Замораживание пипсов и список пипсов
    Anonymous » » в форуме Python
    0 Ответы
    15 Просмотры
    Последнее сообщение Anonymous
  • Как исправить замораживание во время обновления обновления элементов коллекции?
    Anonymous » » в форуме IOS
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»