from time import sleep
def worker(n: int, cb=None):
for i in range(n):
sleep(0.2) # работу работаем
if cb is not None and i % 5 == 0:
cb(i, n) # оповещаем, если пора и если есть что
if cb is not None:
cb(n, n) # последнее оповещение на 100%. можно убрать
# использование
def callback(i, n): # callback для вывода прогресса в консоль
print(f'{i/n:.1%}') # выводим процент завершения
worker(50, callback) # работаем
from turtle import *
color("black", "red")
m = 100
def myfunc(): # мы говорим "существует функция myfunc, не принимающая параметров"
forward(12*m) # функция "увидит" переменную m, описанную выше по коду
right(940)
begin_fill()
for i in range(4):
myfunc() # вызываем нашу функцию
end_fill()
canvas = getcanvas()
cnt = 0
for y in range(-100*m, 100*m, m):
for x in range(-100*m, 100*m, m):
item = canvas.find_overlapping(x,y,x,y)
if len(item) == 1 and item[0] == 5:
cnt += 1
print(cnt)
done()
exit()
def func_B(s):
print('B says:')
func_A(s)
def func_A(s):
print('Hello from A to', s)
func_B('the world')
DEFAULT = 'world'
def func_C(s = DEFAULT):
print('Hello,', s)
a
, которая, разумеется, пропадает, когда обработчик завершается.prefix = "!"
s = "!ping"
if s.startswith(prefix):
command = s[len(prefix):] # срезы в питоне? не, не слышал
print('Команда', command)
else:
print('Это не команда')
Мне нужно именно через путь обязательно
import data.config as config
безо всяких дополнительных манипуляций. while True: ... time.sleep()
там был метод, который надо периодически вызывать, и вызывать его используя метод after() в ткинтере. Тогда всё будет работать в одном потоке.