Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 11

Тема: Как сделать python window update на PyQt5 или Tkinter?

  1. Как сделать python window update на PyQt5 или Tkinter?

    Привет всем! Короче, я тут фигачу GUI на Python и мне надо сделать так, чтобы окно автоматически обновлялось, типа: перезагружает данные каждые несколько секунд. Кто сталкивался с подобным на PyQt5 или Tkinter? Можете подкинуть примеры или хотя бы объяснить как это сделать? Буду благодарен за любые советы и примеры кода! Плиз, поможете ребят? ??



  2. Ждём вас в нашем чате в Телеграмм ==>> @pythoneer_chat

    А ТАКЖЕ: Канал о Python, статьи и книги ==>>
    @pythoneer_ru

  3. Йо! Первое, что приходит в голову для PyQt5 - это использование таймеров. Можно юзать QTimer, чтобы обновлять ваши данные. Вот читай пример:

    Программный код:
        import sys
        from PyQt5
    .QtWidgets import QApplicationQWidgetQLabel
        from PyQt5
    .QtCore import QTimer

        
    class MyApp(QWidget):
            
    def __init__(self):
                
    super().__init__()
                
    self.label QLabel('Текущие данные'self)
                
    self.initUI()
        
            
    def initUI(self):
                
    self.setGeometry(100100200200)
                
    self.setWindowTitle('PyQt5 Window Update')
        
                
    timer QTimer(self)
                
    timer.timeout.connect(self.update_label)  # что делать при тайм-ауте
                
    timer.start(2000)  # обновлять каждую 2000 мс (2 сек)

                
    self.show()
        
            
    def update_label(self):
                
    self.label.setText('Обновленные данные')

        if 
    __name__ == '__main__':
            
    app QApplication(sys.argv)
            
    ex MyApp()
            
    sys.exit(app.exec_()) 
    Думаю, что это тебе поможет ?

  4. Цитата Сообщение от Дымка
    Йо! Первое, что приходит в голову для PyQt5 - это использование таймеров. Можно юзать QTimer, чтобы обновлять ваши данные. Вот читай пример:

    Программный код:
        import sys
        from PyQt5
    .QtWidgets import QApplicationQWidgetQLabel
        from PyQt5
    .QtCore import QTimer

        
    class MyApp(QWidget):
            
    def __init__(self):
                
    super().__init__()
                
    self.label QLabel('Текущие данные'self)
                
    self.initUI()
        
            
    def initUI(self):
                
    self.setGeometry(100100200200)
                
    self.setWindowTitle('PyQt5 Window Update')
        
                
    timer QTimer(self)
                
    timer.timeout.connect(self.update_label)  # что делать при тайм-ауте
                
    timer.start(2000)  # обновлять каждую 2000 мс (2 сек)

                
    self.show()
        
            
    def update_label(self):
                
    self.label.setText('Обновленные данные')

        if 
    __name__ == '__main__':
            
    app QApplication(sys.argv)
            
    ex MyApp()
            
    sys.exit(app.exec_()) 
    Думаю, что это тебе поможет ?
    Четко написал, бро! Пользуюсь таймерами в своих проектах постоянно. Полезный прил! ?

  5. В Tkinter проще простого, ща покажу на пальцах:

    Программный код:
        import tkinter as tk
        
        def update_label
    ():
            
    label.config(text='Обновленные данные')
            
    root.after(2000update_label)  # делаем апдейт каждые 2 сек

        
    root tk.Tk()
        
    label tk.Label(roottext='Текущие данные')
        
    label.pack()
        
        
    # Запускаем цикл
        
    root.after(2000update_label)
        
    root.mainloop() 
    Код запускает цикл обновления данных. Просто, как два пальца об асфальт ?

  6. Цитата Сообщение от SpellWeaver909
    В Tkinter проще простого, ща покажу на пальцах:

    Программный код:
        import tkinter as tk
        
        def update_label
    ():
            
    label.config(text='Обновленные данные')
            
    root.after(2000update_label)  # делаем апдейт каждые 2 сек

        
    root tk.Tk()
        
    label tk.Label(roottext='Текущие данные')
        
    label.pack()
        
        
    # Запускаем цикл
        
    root.after(2000update_label)
        
    root.mainloop() 
    Код запускает цикл обновления данных. Просто, как два пальца об асфальт ?
    Хаха, реально просто... Никогда не знал, что это так легко с Tkinter. Спасибки!

  7. Окей, если надо ещё 'не зависать', юзай потоки или асинхронность. Может вот так:

    Программный код:
        import tkinter as tk
        import threading
        from time import sleep

        def update_label
    ():
            while 
    True:
                
    sleep(2)
                
    label.config(text='Обновленные данные')

        
    root tk.Tk()
        
    label tk.Label(roottext='Текущие данные')
        
    label.pack()

        
    thread threading.Thread(target=update_label)
        
    thread.start()

        
    root.mainloop() 
    Мультипотоковость - это мощно ?

  8. Цитата Сообщение от Леголас
    Окей, если надо ещё 'не зависать', юзай потоки или асинхронность. Может вот так:

    Программный код:
        import tkinter as tk
        import threading
        from time import sleep

        def update_label
    ():
            while 
    True:
                
    sleep(2)
                
    label.config(text='Обновленные данные')

        
    root tk.Tk()
        
    label tk.Label(roottext='Текущие данные')
        
    label.pack()

        
    thread threading.Thread(target=update_label)
        
    thread.start()

        
    root.mainloop() 
    Мультипотоковость - это мощно ?
    Юзал многопоточность, тащемто мощь. Но надо бы за потоками следить, а то баги могут быть.

  9. Можно попробовать так же с асинхронностью, если ты в курсе как с аsyncio работать:

    Программный код:
        import asyncio
        import tkinter 
    as tk

        def update_label
    ():
            
    label.config(text='Обновленные данные')

        
    async def main_update():
            while 
    True:
                
    await asyncio.sleep(2)
                
    update_label()

        
    root tk.Tk()
        
    label tk.Label(roottext='Текущие данные')
        
    label.pack()

        
    loop asyncio.get_event_loop()
        
    loop.run_until_complete(main_update()) 
    Правда делать все это в одном потоке так себе, но заюзать async - кстати тоже норм варик.

  10. Цитата Сообщение от Виктор
    Можно попробовать так же с асинхронностью, если ты в курсе как с аsyncio работать:

    Программный код:
        import asyncio
        import tkinter 
    as tk

        def update_label
    ():
            
    label.config(text='Обновленные данные')

        
    async def main_update():
            while 
    True:
                
    await asyncio.sleep(2)
                
    update_label()

        
    root tk.Tk()
        
    label tk.Label(roottext='Текущие данные')
        
    label.pack()

        
    loop asyncio.get_event_loop()
        
    loop.run_until_complete(main_update()) 
    Правда делать все это в одном потоке так себе, но заюзать async - кстати тоже норм варик.
    Этот вариант очень гибкий, но, пожалуй, чуть сложноват для новых фишек. Спасибо!

Страница 1 из 2 12 ПоследняяПоследняя