это упрощенная версия программы, которую я пишу, и как она работает. Я использую последнюю кнопку для проверки своих художественных произведений, и она работает.
Мне нужно, чтобы функция
self.controller.show_orders
запускалась сама по себе каждые несколько секунд вместо нажатия кнопки каждые несколько секунд.
Я пытался убрать коды, которые сделали кнопку, и только иметь функцию, но она не работает.
Я также пытался
self.show_orders_on_grid()
def show_orders_on_grid(self):
self.controller.show_orders
, и он тоже не работает.
Моим последним усилием было поставить mainl oop после функции, и это работает, что я понимаю почему.
for i in range(len(self.model.row_list)):
self.view.listbox_list[i].delete(0, "end",)
for element in self.model.row_list[i]:
self.view.listbox_list[i].insert("end", element)
self.root.mainloop()
if __name__ == "__main__":
c = Controller()
Не могли бы вы помочь мне, как я могу заставить функцию работать самостоятельно? заранее спасибо.
from datetime import datetime
import time
import os
import tkinter as tk
import sqlite3
from apscheduler.schedulers.background import BackgroundScheduler
import socket
import json
import tkinter as tk
class Model():
def __init__(self):
self.row_list = []
self.path = '/Users/paul/Documents/python/GUI/gui class/ordering
app/4th.db'
self.get_data_from_sql()
def get_data_from_sql(self):
self.conn = sqlite3.connect(self.path)
self.cursor = self.conn.cursor()
self.cursor.execute('SELECT * FROM main')
self.data = self.cursor.fetchall()
for row in self.data:
self.row_list.append(row)
self.conn.commit()
class View(tk.Frame):
def __init__(self, parent, controller):
super().__init__(parent, bd =2, relief = tk.RIDGE)
self.parent = parent
self.controller = controller
self.pack(fill=tk.BOTH, expand=1)
self.frame_list = []
self.listbox_list = []
self.button_list = []
for r in range(2):
self.rowconfigure(r, weight=1)
for c in range(4):
self.columnconfigure(c, weight=1)
self.frame=Small_Frame(self)
self.frame.grid(row = r, column = c, padx=1, pady = 1, sticky=
(tk.N, tk.S, tk.W, tk.E))
self.frame_list.append(self.frame)
self.button_list[7].configure(command = self.controller.show_orders)
class Small_Frame(tk.Frame):
def __init__(self, parent):
super().__init__(parent, borderwidth=1, relief="groove")
self.parent = parent
self.pack()
self.box = tk.Listbox(self, borderwidth=0)
self.box.pack()
self.parent.listbox_list.append(self.box)
self.button = tk.Button(self, text = "get")
self.button.pack()
self.parent.button_list.append(self.button)
class Controller():
def __init__(self):
self.root = tk.Tk()
self.model = Model()
self.view = View(self.root, self)
self.root.title("notbook my own try")
self.root.geometry("1200x650")
self.root.config(bg="LightBlue4")
self.root.mainloop()
def show_orders(self):
for i in range(len(self.model.row_list)):
self.view.listbox_list[i].delete(0, "end",)
for element in self.model.row_list[i]:
self.view.listbox_list[i].insert("end", element)
if __name__ == "__main__":
c = Controller()